假如 有三账号(user、admin、manager)密码默认是账号字符,首页需要登录才能访问(首页下有四个二级路由页面,分别为 News Admin User Manager ) 默认初始页面为登录页面 登录过后跳转到首页 三个账号有对应的页面(个人页面为首页下的二级页面)同时三个账号权限不同 admin可以访问user与manager的页,而user与manager 只能访问自己对应的页面 则在vue3 如何实现权限登录 <template> <div class="login"> <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" class="demo-ruleForm" :size="formSize" status-icon > <el-form-item> <div class="text"> <h1>奥格森评分系统</h1> </div> </el-form-item> <el-form-item > <el-input v-model="ruleForm.username" placeholder="请输入账号" /> </el-form-item> <el-form-item > <el-input v-model="ruleForm.password" type="password" placeholder="请输入密码" show-password /> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm(ruleFormRef)"> Create </el-button> </el-form-item> </el-form> </div> </template> <script setup> </script>
时间: 2024-03-16 22:45:34 浏览: 102
oracle默认用户密码
首先,需要在登录后将用户信息保存起来,可以使用 Vuex 或者 localStorage 等方式保存用户信息。然后,在路由配置时,可以使用路由守卫对需要登录才能访问的路由进行判断,并根据用户权限跳转到相应的页面。下面是一个示例代码:
```javascript
import { createRouter, createWebHashHistory } from "vue-router";
const routes = [
{
path: "/login",
name: "Login",
component: () => import("@/views/Login.vue")
},
{
path: "/",
name: "Home",
component: () => import("@/views/Home.vue"),
children: [
{
path: "news",
name: "News",
component: () => import("@/views/News.vue"),
meta: { requiresAuth: true, roles: ["admin", "user", "manager"] }
},
{
path: "admin",
name: "Admin",
component: () => import("@/views/Admin.vue"),
meta: { requiresAuth: true, roles: ["admin"] }
},
{
path: "user",
name: "User",
component: () => import("@/views/User.vue"),
meta: { requiresAuth: true, roles: ["user"] }
},
{
path: "manager",
name: "Manager",
component: () => import("@/views/Manager.vue"),
meta: { requiresAuth: true, roles: ["manager"] }
}
]
}
];
const router = createRouter({
history: createWebHashHistory(),
routes
});
router.beforeEach((to, from, next) => {
const isLoggedIn = localStorage.getItem("isLoggedIn");
const userRole = localStorage.getItem("userRole");
if (to.meta.requiresAuth && !isLoggedIn) {
next({ name: "Login" });
} else if (to.meta.roles && !to.meta.roles.includes(userRole)) {
next({ name: "Home" });
} else {
next();
}
});
export default router;
```
在上面的代码中,定义了四个二级路由,分别为 News、Admin、User、Manager,同时设置了它们需要登录才能访问,并且设置了相应的角色权限。在路由导航守卫 beforeEach 中,对需要登录才能访问的路由进行判断,如果用户未登录,则跳转到登录页面,否则检查用户的角色权限,如果不符合要求,则跳转到首页。同时,在登录成功后,可以保存用户信息到 localStorage 中,以便在刷新页面后仍能保持登录状态。
阅读全文