nuxt中使用路由守卫的方法步骤
1.在plugins文件下创建一个route.js
import{getCookie,setCookie}from'@/pages/logreg/api/cookie'
importaxiosfrom'axios'
exportdefault({app,store})=>{
app.router.beforeEach((to,from,next)=>{
letisClient=process.client
if(isClient){
letcurrentUrl=location.href
if(currentUrl.indexOf('access_token=')!==-1){
letwechattoken=currentUrl.split('access_token=')[1]
wechattoken=wechattoken.split('&')[0]
setCookie('token',wechattoken,5)
}
lettoken=getCookie('token')
if(token){
store.state.user.userinfo.token=token
axios
.get('https://api.ass.net/pub/api/user_info',{
params:{
token
}
})
.then(res=>{
res=res.data
if(res.code==0){
res=res.data
res.headImg=res.headImg.replace('http:','https:')
store.state.user.userinfo=Object.assign(
{},
store.state.user.userinfo,
res
)
}
})
.catch(error=>console.log(error))
}
}
next()
})
}
2.在nuxt.config.js里面配置
plugins:[
{src:'@/plugins/route',ssr:true}
],
PS:Nuxt在axios请求拦截中使用路由
最近在开发一个网站,用的nuxt搭建的框架,因为需要在请求token过期之后提示用户重新登录并且返回登录页面,但是在axios的配置文件中使用router.push一直报错,都准备放弃使用公众组件去进行路由跳转了,但是天无绝人之路,最终在官方文档中找到了redirect,具体操作如下:
在axios的js文件中添加默认的方法,并且获取redirect,并且使用使用myredirect将redirect储存起来
letmyredirect;
exportdefaultfunction({redirect}){
myredirect=redirect;
}
在需要使用路由跳转的地方进行跳转(此处在判断token过期时跳转)
if(error.message.toString().slice(-3)==='401'){
Vue.prototype.$message.error('登陆超时,请重新登陆...')
setTimeout(function(){
returnmyredirect('/login/login')
},2000)
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。