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 相关文章推荐
JS类库Bindows1.3中的内存释放方式分析
Mar 08 Javascript
函数式 JavaScript(一)简介
Jul 07 Javascript
checkbox选中与未选中判断示例
Aug 04 Javascript
你知道setTimeout是如何运行的吗?
Aug 16 Javascript
jquery submit()不能提交表单的解决方法
Apr 24 jQuery
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
Aug 17 Javascript
Vue组件库发布到npm详解
Feb 17 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
Oct 24 Javascript
微信小程序实现点击空白隐藏的方法示例
Aug 13 Javascript
vue 移动端记录页面浏览位置的方法
Mar 11 Javascript
js+canvas实现转盘效果(两个版本)
Sep 13 Javascript
Vue+Openlayers自定义轨迹动画
Sep 24 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
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
PHP中关键字interface和implements详解
2017/06/14 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
Jquery判断form表单数据是否变化
2016/03/30 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
2016/06/01 Javascript
在 Angular 中实现搜索关键字高亮示例
2017/03/21 Javascript
Vue计算属性的使用
2017/08/04 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
vue实现word,pdf文件的导出功能
2018/07/31 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
[00:44]TI7不朽珍藏III——军团指挥官不朽展示
2017/07/15 DOTA
[55:03]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.20
2020/11/20 DOTA
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Django卸载之后重新安装的方法
2017/03/15 Python
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
Python pexpect模块及shell脚本except原理解析
2020/08/03 Python
详解pandas赋值失败问题解决
2020/11/29 Python
使用Python提取文本中含有特定字符串的方法示例
2020/12/09 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
幼儿园中秋节活动反思
2014/02/16 职场文书
产品质量保证书
2014/04/29 职场文书
工商企业管理应届生求职信
2014/05/04 职场文书
减负增效提质方案
2014/05/23 职场文书
商务经理岗位职责
2014/07/30 职场文书
2015年大学元旦晚会活动策划书
2014/12/09 职场文书
给校长的建议书范文
2015/09/14 职场文书
学会掌握自己命运的十条黄金法则:
2019/08/08 职场文书
Django实现翻页的示例代码
2021/05/24 Python