Vue不同用户权限显示不同内容

一、登录页

<template>
    <div>
      <div class="username">
        <span>姓名</span>
        <input type="text" v-model="form.username">
      </div>
      <div class="password">
        <input type="text" v-model="form.password">
      </div>
      <div class="login">
        <span>登录</span>
      </div>
      <div>
        <span>{{getDetail}}</span>
        <b>{{getDetail=='管'?'':'训'}}</b>
      </div>
    </div>
</template>

二、内部函数

export default {
  name: 'App',
  data() {
    return {
      form:{
        username:'',
        password:''
      }
    }
  },
  computed:{
    getDetail(){
      let isTeacher=this.$store.state.roles.indexOf('teacher')>=0
      let isStudent=this.$store.state.roles.indexOf('student')>=0&&(!isTeacher)
      let isAdmin=(this.$store.state.roles.indexOf('admin')>0&&!isTeacher&&!isStudent)||(this.$store.state.roles.indexOf('root')&&!isTeacher&&!isStudent)
      return isTeacher?'师':isStudent?'学':isAdmin?'管':''
    }
  },
  methods: {
    axios.get({
      url:'请求地址',
      params:this.form
    }).then(res=>{
      localStorage.setItem('username',this.form.name)
      localStorage.setItem('organize',res.data.organize)
      this.$store.state.roles=res.data.roles
      this.$store.state.userId=res.data.userId
      this.jump('navPage')
    })
  },
}
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue中,可以通过路由守卫来实现不同用户显示不同页面的功能。具体的实现方式如下: 1. 在Vue项目中安装vue-router插件。 2. 在router.js文件中定义路由,包括需要展示的页面和需要登录才能访问的页面。 3. 在main.js文件中引入router.js文件并在Vue实例中使用该插件。 4. 在需要登录才能访问的页面中,可以使用路由守卫来判断用户是否已经登录。如果用户已经登录,则可以继续访问该页面;如果用户未登录,则可以跳转到登录页面。 5. 在需要展示不同页面的功能中,可以根据用户的身份信息来判断需要展示哪些页面。可以使用vuex来管理用户的身份信息。 下面是一个简单的示例代码,可以供参考: ``` // router.js import Vue from 'vue'; import Router from 'vue-router'; import Home from './views/Home.vue'; import Login from './views/Login.vue'; import Admin from './views/Admin.vue'; import User from './views/User.vue'; Vue.use(Router); const router = new Router({ routes: [ { path: '/', name: 'home', component: Home }, { path: '/login', name: 'login', component: Login }, { path: '/admin', name: 'admin', component: Admin, meta: { requiresAuth: true, isAdmin: true } }, { path: '/user', name: 'user', component: User, meta: { requiresAuth: true, isAdmin: false } } ] }); router.beforeEach((to, from, next) => { const requiresAuth = to.matched.some(record => record.meta.requiresAuth); const isAdmin = to.matched.some(record => record.meta.isAdmin); const currentUser = firebase.auth().currentUser; if (requiresAuth && !currentUser) { next('/login'); } else if (requiresAuth && currentUser && isAdmin !== currentUser.isAdmin) { next('/'); } else { next(); } }); export default router; ``` ``` // main.js import Vue from 'vue'; import App from './App.vue'; import router from './router'; Vue.config.productionTip = false; new Vue({ router, render: h => h(App), }).$mount('#app'); ``` 在上面的示例代码中,我们定义了四个路由:Home、Login、Admin和User。其中,Admin和User需要登录才能访问。在访问Admin和User页面之前,我们使用路由守卫来判断用户是否已经登录,如果未登录则跳转到登录页面。在判断用户是否有权限访问Admin和User页面时,我们根据用户的身份信息来判断需要展示哪些页面。如果是管理员,则可以访问Admin页面;如果是普通用户,则只能访问User页面。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值