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 相关文章推荐
游戏人文件夹程序 ver 4.03
Jul 14 Javascript
用倒置滤镜把div倒置,再把table倒置。
Jul 31 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
Jul 03 Javascript
基于JS实现导航条flash导航条
Jun 17 Javascript
jQuery Easyui Datagrid实现单行的上移下移及保存移动的结果
Aug 15 Javascript
概述jQuery中的ajax方法
Dec 16 Javascript
使用jQuery,Angular实现登录界面验证码详解
Apr 27 jQuery
Vue插值、表达式、分隔符、指令知识小结
Oct 12 Javascript
创建echart多个联动的示例代码
Nov 23 Javascript
JS异步处理的进化史深入讲解
Aug 25 Javascript
js判断一个对象是数组(函数)的方法实例
Dec 19 Javascript
JQuery获得内容和属性方法解析
May 30 jQuery
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调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
PHP实现下载远程图片保存到本地的方法
2017/06/19 PHP
jQuery 开天辟地入门篇一
2009/12/09 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
2012/02/03 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
JavaScript获取网页表单action属性的方法
2015/04/02 Javascript
JS实现兼容性较好的随屏滚动效果
2015/11/09 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
浅谈react.js中实现tab吸顶效果的问题
2017/09/06 Javascript
VUE中的无限循环代码解析
2017/09/22 Javascript
在HTML文档中嵌入JavaScript的四种方法
2018/05/07 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
2020/07/31 Javascript
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
python实现通过pil模块对图片格式进行转换的方法
2015/03/24 Python
浅谈Python的文件类型
2016/05/30 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
体育专业学生自我评价范文
2014/01/17 职场文书
销售主管岗位职责范本
2014/02/14 职场文书
运动会入场口号
2014/06/07 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
行政工作试用期自我评价
2014/09/14 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
挂职锻炼个人总结
2015/03/05 职场文书
新娘婚礼答谢词
2015/09/29 职场文书
职场新人知识:如何制定一份合理的工作计划?
2019/09/11 职场文书
分享7个 Python 实战项目练习
2022/03/03 Python