前端实现:不同角色登入展示不同页面效果

功能介绍:首先是不同身份的用户展示的界面不同,其次实现在注册时选择对应的身份

不同身份的用户系统展示界面不同

1. 数据库user 表中添加role属性

No.1 点击“表”——右击“user”——点击“设计表”——添加“role”属性——user表中进行角色设置

添加属性:

No.2  “user”表中进行“role”多种角色设置(比如,用户,管理员)

2. 在后台的 User 类里面加一个新的字段叫 role,然后重启后台

3. 在菜单的标签上加一个 v-if 判断就可以了(eg:想让管理员看到这个菜单)

<!--          <el-submenu>二级菜单-->
<el-submenu index="info" v-if="user.role==='管理员'">
  <template slot="title">
    <i class="el-icon-house"></i>
    <span> 信息管理</span>
  </template>
  <el-menu-item index="/user">用户信息</el-menu-item>
</el-submenu>

完善:路由守卫解决用户页面权限问题 (添置index.js页面)

router.beforeEach((to, from, next) => {
  // to 是到达的路由信息
  // from 是开源的路由信息
  // next 是帮助我们跳转路由的函数
  let adminPaths = ['/user']
  let user = JSON.parse(localStorage.getItem('honey-user') || '{}')

  if (user.role !== '管理员' && adminPaths.includes(to.path)) {
    // 如果当前登录的用户不是管理员,然后当前的到达的路径是管理员才有权限访问的路径,那这个时候我就让用户去到一个没有权限的页面,不让他访问实际的页面
    next('/403')
  } else {
    next()
  }
})

在注册时选择不同身份登录

1. 在对应vue页面添加预计的框框

<el-form-item prop="role">
  <el-radio-group v-model="user.role">
    <el-radio label="管理员"></el-radio>
      <el-radio label="用户"></el-radio>
  </el-radio-group>
</el-form-item>

2. 在vue页面下方export default---data---rules添加角色提醒

role: [
  { required: true, message: '请选择角色', trigger: 'blur' },
],

3. 在WebController 中设置判断,即注册时该项不能为空

if(StrUtil.isBlank(user.getUsername())||StrUtil.isBlank(user.getPassword())||StrUtil.isBlank(user.getRole())){
    return Result.error("数据输入不合法");

}

4. 普通框架(未加入Mybaits),需人为补上该字段,使其插入数据库(记得然后项目重启

5. 简易版展示效果:

补充:想设置跳转页面链接很简单

只需要如下命令

<router-link to ="/">返回首页</router-link>

  • 26
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现不同角色登录跳转不同前端页面,可以在登录成功后,根据用户的角色信息,使用路由跳转到不同页面。 首先需要在路由配置定义不同角色的路由和对应的组件。例如,假设有两个角色:管理员和普通用户,且管理员登录后跳转到管理页面,普通用户登录后跳转到普通用户页面,可以这样配置路由: ```javascript import Admin from '../views/Admin.vue' import User from '../views/User.vue' const routes = [ { path: '/admin', name: 'admin', component: Admin, meta: { requiresAuth: true, roles: ['admin'] } // 需要管理员权限 }, { path: '/user', name: 'user', component: User, meta: { requiresAuth: true, roles: ['user'] } // 需要普通用户权限 } ] ``` 其,`meta` 可以用来定义该路由需要的权限和角色,`requiresAuth` 表示该路由需要登录才能访问,`roles` 表示该路由需要的角色。 接下来,在登录成功后,可以根据用户的角色信息跳转到对应的页面。例如,可以在登录成功后,将用户角色信息保存在 Vuex : ```javascript // store.js const store = new Vuex.Store({ state: { user: null }, mutations: { setUser(state, user) { state.user = user } }, actions: { login({ commit }, { username, password }) { // 调用登录接口,获取用户信息 api.login({ username, password }) .then(user => { // 将用户信息保存在 Vuex commit('setUser', user) // 根据用户角色跳转到对应页面 if (user.roles.includes('admin')) { router.push({ name: 'admin' }) } else { router.push({ name: 'user' }) } }) } } }) ``` 在这个例子,登录成功后,根据用户的角色信息,使用 `router.push` 方法跳转到对应的页面。 注意,在路由跳转前,需要先判断用户是否已经登录,如果用户没有登录则跳转到登录页面。可以在路由配置使用 `beforeEnter` 钩子函数来实现: ```javascript // router.js const routes = [ { path: '/login', name: 'login', component: Login }, { path: '/admin', name: 'admin', component: Admin, meta: { requiresAuth: true, roles: ['admin'] }, // 需要管理员权限 beforeEnter: (to, from, next) => { if (store.state.user && store.state.user.roles.includes('admin')) { next() } else { next('/login') } } }, { path: '/user', name: 'user', component: User, meta: { requiresAuth: true, roles: ['user'] }, // 需要普通用户权限 beforeEnter: (to, from, next) => { if (store.state.user && store.state.user.roles.includes('user')) { next() } else { next('/login') } } } ] ``` 在这个例子,`beforeEnter` 钩子函数会在路由跳转前执行,如果用户已经登录且具有相应的角色,则可以跳转到目标页面,否则跳转到登录页面。 以上就是实现不同角色登录跳转不同前端页面的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值