怎么在vue中使用鸡蛋和智威汤逊实现一个登录验证功能

  介绍

怎么在vue中使用鸡蛋和智威汤逊实现一个登录验证功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

vue前端主要。js中:

import  axios 得到& # 39;axios& # 39;;   import  cookie 得到& # 39;公共/util/# 39;;   router.beforeEach(下),,,,,=祝辞,{   ,console.log(& # 39;路由拦截& # 39;)   ,//判断要去的路由有没有requiresAuth   ,if  (to.meta.requiresAuth), {   let 才能;token =, cookie.getCookie(& # 39;标记# 39;);   if 才能;(令牌),{   ,,next ();   ,,},{else    下({,,   ,,,路径:,& # 39;/登录# 39;   ,,});   ,,}   ,}else  {   ,,下一个();//如果无需令牌,那么随它去吧   ,}   })//,http  request 拦截器   axios.interceptors.request.use (=,config 祝辞,{   let 才能;token =, cookie.getCookie(& # 39;标记# 39;);   console.log才能(令牌)   if 才能;(令牌),{,//判断是否存在令牌,如果存在的话,则每个http 头都加上令牌   ,,config.headers.authorization =, token  ${牌}';   ,,}   return 才能;配置;   },=,err 祝辞,{   return 才能Promise.reject(错);   ,});   ,//,http  response 拦截器   axios.interceptors.response.use (=,response 祝辞,{   return 才能;响应;   },=,error 祝辞,{   if 才能;(error.response), {   ,,switch  (error.response.status), {   ,,,case  401:   ,,,,//,返回,401年,清除牌信息并跳转到登录页面   ,,,,router.replace ({   ,,,,,路径:,& # 39;/登录# 39;   ,,,,});   ,,}   ,,}   return 才能Promise.reject (error.response.data);,,//,返回接口返回的错误信息   ,});   Vue.prototype http 美元;=,axios;

其中跑龙套。js中我封装了操作饼的方法

//获取饼干,   function  getCookie(名字),{   var 才能,加勒比海盗,reg =, new 正则表达式(“(^ |,)“,+,name  +,“=((^;) *) (; | $)“);   if 才能;(arr =, document.cookie.match (reg))   ,,return  (arr [2]);   其他的才能   ,,return 零;   ,,}   ,,//才能设置cookie,增加到vue实例方便全局调用   function  setCookie  (c_name、,价值,expiredays), {   var 才能;exdate =, new 日期();   exdate.setDate才能(exdate.getDate (), +, expiredays);   document.cookie 才能=,c_name  +,“=? +,逃避(值),+,((==expiredays  null), ?,,,,,,,,=暗狡?+,exdate.toGMTString ());   ,,};   ,,//才能删除饼干   function  delCookie (名字),{   var 才能;exp =, new 日期();   exp.setTime才能(exp.getTime(),安康;1);   var 才能;cval =, getCookie(名称);   if 才能;(cval  !=, null)   ,,document.cookie =, name  +,“=? +, cval  +,“;=暗狡?+,exp.toGMTString ();   ,,};   module.exports 才能=,{   getCookie才能:getCookie,   setCookie才能:setCookie,   delCookie: delCookie才能   以前,,}

路由中需要登录才能访问的页面,应:

路径:& # 39;/admin/经理# 39;,组件:页面,名字:& # 39;管理系统首页& # 39;,元:{requiresAuth:真}

如果需要获取令牌中的信息则:

let  token =, cookie.getCookie(& # 39;标记# 39;);   let  Base64 =,要求(& # 39;js-base64& # 39;) .Base64;   let  str =, token.split(& # 39;强生# 39;)[1];   let  user =, JSON.parse (Base64.decode (str));   console.log(用户)

后端在登录逻辑执行完后,需要给前端发放标记

, let  jwt =,要求(& # 39;jsonwebtoken& # 39;);   ,,,let  token =, jwt.sign ({   ,,,,,user_id: 1,   ,,,,,user_name:, & # 39;张三& # 39;   ,,,,},,& # 39;自定义签名盐值& # 39;,,{   ,,,,,expiresIn:, & # 39; 60 & # 39;,//时间根据自己定,具体可参考jsonwebtoken插件官方说明   ,,,,});   this.ctx.cookies.set(& # 39;令牌,,,,,{maxAge: 60 * 1000, httpOnly:假的,覆盖:真的,签署:假})   时间=this.ctx.body 真实;

接着是中间件:

module.exports =,(),=祝辞,{   ,const  jwt =,要求(& # 39;jsonwebtoken& # 39;);   ,return  async  function  (ctx,,下一个),{   if 才能;(ctx.request.header[& # 39;授权# 39;]),{   ,,let  token =, ctx.request.header[& # 39;授权# 39;].split (& # 39;, & # 39;) [1];   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在vue中使用鸡蛋和智威汤逊实现一个登录验证功能