加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_阳江站长网 (https://www.0662zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 政策 > 正文

Vue 简单实现前端权限控制的示例

发布时间:2020-12-30 01:17:20 所属栏目:政策 来源:做站长
导读:这篇文章主要介绍了Vue 简单实现前端权限控制的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 简要说明 最近写了一下vue控制权限(菜单、路由)的项目,用了vuex、addRoute

// 登录
login: async ({ commit, dispatch}, params) => {
let result = await axios(‘/api/login’, {params})
if(result.data.code > 0) {
// 登录成功以后 获取当前用户权限路由
let userRoutes = await dispatch(‘getMenu’)
if (userRoutes.code > 0) {
// 把请求回来的路由动态添加到 route 里
router.addRoutes(userRoutes.data)
// 添加完成后,现在可以跳转到首页了~
router.push(‘/home’)
}
return {code: 1, data: result.data}
} else {
console.log(result.data.msg)
return {code: 0}
}
},

现在就已经大功告成了,你的项目可以进行正常的登录、跳转、动态更新路由等操作了

但是

现在还差最后一步,退出登录

因为在axios拦截里面,token失效后会调用退出接口

axios.interceptors.response.use(
response => {
if (response.status === 200) {
// 身份验证失败
if(response.data.code === -1) {
// 执行退出登录
store.dispatch(‘global/loginOut’)
} else {
// 如果请求头里有token
let token = response.headers.token
if(token) {
localStorage.setItem(‘token’, token)
axios.defaults.headers.token = token
}
}
return Promise.resolve(response)
} else {
return Promise.reject(response)
}
}
)

所以才会提到开头说:刚打开页面的时候,不管有没有登录,都去请求菜单接口。

如果没有登录,则会调用退出登录接口,给路由设置默认路由。

// 退出登录
loginOut: async ({ state }) => {
// 退出登录清空 token 和 headers 里面的 token
localStorage.removeItem(‘token’)
delete axios.defaults.headers.token
// 退出登录要动态添加 登录页面 和 * 重定向页面
let errRoutes = state.allRoutes.filter(item => item.path == ‘*’)
errRoutes.push(state.allRoutes.filter(res => errRoutes[0].redirect == res.path)[0])
router.addRoutes(errRoutes);
router.currentRoute.path !== ‘/demo’ ? router.push(“/demo”) : null

let result = await axios(‘/api/loginOut’, {params: {userId: state.userId}})
if(result.data.code !== 1) {
console.log(‘退出登录接口异常’)
}
},

到现在为止,有项目就算大功告成了

到此这篇关于Vue 简单实现前端权限控制的示例的文章就介绍到这了,更多相关Vue 前端权限控制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:脚本之家

链接:https://www.jb51.net/article/202890.htm

申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!

本文素材来自互联网

(编辑:应用网_阳江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读