nuxt.js中间件实现拦截权限判断的方法


Posted in Javascript onNovember 21, 2018

最近在把vue的项目改成基于nuxt.js是 ssr渲染,需要进行权限拦截判断,网上查了不少资料。最终看官方手册解决了,贴一下过程

项目环境

"element-ui":"^2.3.4",

"flyio":"^0.5.2",

"js-cookie":"^2.2.0",

"nuxt":"^1.4.0",

一:首先登录页面

在登录页面script中引入

import Cookie from 'js-cookie' //npm install js-cookie --save

在script里加上

data(){
 return{
  redirectURL:'/'
 }
},
mounted() {
  let rediretUrl = this.$route.query.ref;
  if (rediretUrl){
  this.redirectURL = rediretUrl
  }
 }

接着在methods里面编写一个 submitLogin的方法

submitLogin(ev) {
  var _this = this;
  this.$refs.ruleForm2.validate((valid) => {
   if (valid) {
   _this.logining = true
   var sendData = {
    username: _this.ruleForm2.account,
    password: _this.ruleForm2.pass,
    is_remember: _this.isRemember
   };
   //登录操作
   _this.$https.post('login/index', sendData).then(res => {
    if (res.status == 1) {
    //将服务端的token存入cookie当中
    Cookie.set('token', res.data.token)
    //返回上一页
    _this.$router.push(_this.redirectURL)
    }else{
    _this.$message.warning(res.msg)
    }
   })
   } else {
   return false;
   }
  });
  },

二:nuxt中间件middleware编写权限拦截

新建一个userAuth.js,目录结构如下

代码如下

import utils from '~/utils/utils'
 
export default function ({route, req, res, redirect}) {
 let isClient = process.client;
 let isServer = process.server;
 let redirectURL = '/login';
 var token, path
 //在服务端
 if (isServer) {
 let cookies = utils.getcookiesInServer(req)
 path = req.originalUrl;
 token = cookies.token ? cookies.token : ''
 }
 //在客户端判读是否需要登陆
 if (isClient) {
 token = utils.getcookiesInClient('token')
 path = route.path;
 }
 if (path) {
 redirectURL = '/login?ref=' + encodeURIComponent(path)
 }
 //需要进行权限判断的页面开头
 if (!token) {
  redirect(redirectURL)
 }
}

utils.js里面的方法

import Cookie from 'js-cookie'
export default {
 //获取服务端cookie
 getcookiesInServer:function (req) {
 let service_cookie = {};
 req && req.headers.cookie && req.headers.cookie.split(';').forEach(function (val) {
  let parts = val.split('=');
  service_cookie[parts[0].trim()] = (parts[1] || '').trim();
 });
 return service_cookie;
 },
 //获取客户端cookie
 getcookiesInClient:function (key) {
 return Cookie.get(key) ? Cookie.get(key) : ''
 }
}

到这里,我们的中间件,权限判断依据完成了

三:运用到项目中

在项目中。例如,用户信息设置页面,需要进行是否登录判断

pages/user/setting.vue

我们在页面中运用刚刚编写的userAuth中间。

middleware: 'userAuth',

现在

setting页面就有权限判断了

基于nuxt.js渲染的 ssr 网站可以愉快的运行起来了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
prototype Element学习笔记(篇一)
Oct 26 Javascript
JS 树形递归实例代码
May 18 Javascript
js变量以及其作用域详解
Jul 18 Javascript
jQuery筛选器children()案例详解(图文)
Feb 17 Javascript
JS获取单击按钮单元格所在行的信息
Jun 17 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
Nov 26 Javascript
jQuery使用hide方法隐藏元素自身用法实例
Mar 30 Javascript
JavaScript学习笔记之数组去重
Mar 23 Javascript
RequireJS多页面应用实例分析
Jun 29 Javascript
AngularJS 指令详细介绍
Jul 27 Javascript
Vue响应式添加、修改数组和对象的值
Mar 20 Javascript
在Webpack中用url-loader处理图片和字体的问题
Apr 28 Javascript
Nuxt.js SSR与权限验证的实现
Nov 21 #Javascript
详解nuxt路由鉴权(express模板)
Nov 21 #Javascript
使用vue-cli webpack 快速搭建项目的代码
Nov 21 #Javascript
Angular刷新当前页面的实现方法
Nov 21 #Javascript
详解ES6系列之私有变量的实现
Nov 21 #Javascript
jQuery实现上下滚动公告栏详细代码
Nov 21 #jQuery
Vue.js 中 axios 跨域访问错误问题及解决方法
Nov 21 #Javascript
You might like
解析PHP的session过期设置
2013/06/29 PHP
Laravel学习教程之路由模块
2017/08/18 PHP
PHP count_chars()函数讲解
2019/02/14 PHP
PHP iconv()函数字符编码转换的问题讲解
2019/03/22 PHP
对象特征检测法判断浏览器对javascript对象的支持
2009/07/25 Javascript
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
2012/08/14 Javascript
js中for in的用法示例解析
2013/12/25 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
JS日程管理插件FullCalendar简单实例
2017/02/07 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
js上传图片预览的实现方法
2017/05/09 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
2020/04/26 Javascript
js实现批量删除功能
2020/08/27 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
js观察者模式的弹幕案例
2020/11/23 Javascript
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
佐卡伊官网:中国知名珠宝品牌
2017/02/05 全球购物
两年的个人工作自我评价
2014/01/10 职场文书
妇产医师自荐信
2014/01/29 职场文书
酒店中秋节促销方案
2014/01/30 职场文书
爽歪歪广告词
2014/03/20 职场文书
献爱心倡议书
2014/04/14 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
Python学习之迭代器详解
2022/04/01 Python
深入理解 Golang 的字符串
2022/05/04 Golang