VueJS 基于角色的身份验证与路由器 [英] VueJS role based authentication with router

查看:20
本文介绍了VueJS 基于角色的身份验证与路由器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的用例是这样的.

  1. 当有人登录系统时,我会在登录操作中识别用户角色,并将该值存储为状态.
  2. 我有 3 个用户角色,分别是 studentadmindataEntry
  3. 对于这 3 个角色,我也有 3 个单独的路由.(/student,/admin,/dataEntry)
  4. 因此,我想根据用户角色将用户路由到系统.逻辑上是这样的.

if(userType == 'student'){router.push('/学生')},如果(用户类型 == '管理员'){router.push('/admin')}

我如何实现这一目标?我是 vueJS 的新手,我不知道把这些 if 条件放在哪里.

这是我的代码 Store.js

从'vue'导入Vue;从 'Vuex' 导入 Vuex;从 'axios' 导入 axios;从'./main.js'导入路由器;Vue.use(Vuex);export const store = new Vuex.Store({状态:{idToken:空,用户 ID:空,用户类型:空,用户名:空},突变:{authUser(状态,用户数据){state.idToken = userData.token,state.userId = userData.id,state.userName = userData.userName,state.userType = userData.type},clearAuthData(状态){state.idToken = null,state.userId = null,state.userName = null,state.userType = null}},动作:{注册({提交},authData){axios.post('http://localhost/laravel_back/public/api/register', authData).then(res => {提交('authUser',{令牌:res.data.idToken,用户 ID:res.data.localId})//调度('storeUser',authData)}).catch(error => console.log("错误来自操作注册",error))},登录({提交},authData){axios.post('http://localhost/laravel_back/public/api/login',authData).then(res => {console.log("后端响应",res);提交('authUser',{令牌:res.data[0].token,用户名:res.data[1][0].fname,id:res.data[2].id,类型:res.data[3][0].role_id})}).catch(error => console.log(error))//router.push('/学生')},注销({提交},{路由器}){提交('clearAuthData')router.replace('/')},},吸气剂:{用户 ID(状态){返回 state.userId},用户类型(状态){返回 state.userType},用户名(状态){返回 state.userName},返回令牌:状态 =>{返回 state.idToken}}});

header.vue