当前位置: 移动技术网 > IT编程>脚本编程>vue.js > nuxt.js中间件实现拦截权限判断的方法

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

2018年11月30日  | 移动技术网IT编程  | 我要评论

第一育儿网,签约封神,僵尸真神txt下载

最近在把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 网站可以愉快的运行起来了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网