Vue笔记:router 登录权限管理

本文介绍使用Vue-router实现登录权限管理的两种方法。方法一通过meta字段区分登录前后可访问页面,方法二则采用统一的isLogin字段进行权限控制。文章详细展示了如何在main.js中配置导航守卫来实现权限检查。

用vue-router进行登录权限管理

需求

  1. 未登录可访问的页面 / 登陆后不能访问(如登陆/注册页面)
  2. 登录可访问的页面 / 未登录不可访问 (如个人中心)
  3. 无论是否登录都可以访问的页面 (如商品列表)

方法一

添加 meta: {}字段

routes:[
		{path:'/',redirect:'/home'},
		{path:'/home',component:Home,
		children: [{path: 'goodsinfo',component: GoodsInfo},
			{path:'goodscommen',component: GoodsComment}],
			},
		{path:'/login',component: Login,meta: {Member: true}},
		{path:'/login/register',component: Register,meta: {Member: true}},
		{path:'/login/member',component: Member,meta: {isLogin: true,Member:false}},
	]

meta: —— 未设置表示fales
Member: true —— 登录后不可以访问
Member: false —— 登录后可以访问
isLogin: true —— 未登录不可以访问
isLogin: false —— 未登录可以访问

一定要设置两个字段,否则没有无论是否登陆都能访问的页面。

main.js

router.beforeEach((to, from, next) => {
	//获取用户登录成功后储存的登录标志
	let getFlag = localStorage.getItem("Flag") || sessionStorage.getItem("Flag");
	//判断是否登录
	if (getFlag === "isLogin") {
		next()
		//判断 登录后 是否可以访问
		if (to.meta.Member) {
			alert('请先注销');
			next({
				path: '/login/member'
			});
		} else {
			next()
		}
	} else {
		//判断 未登录 是否可以访问
		if (to.meta.isLogin) {
			next({
				path: '/login',
			})
			alert('请先登录');
		} else {
			next()
		}
	}
});

router.afterEach(route => {
	window.scroll(0, 0);
});

方法二

添加 meta: {}字段

	routes:[
		{path:'/',redirect:'/home'},
		{path:'/home',component:Home,
		children: [{path: 'goodsinfo',component: GoodsInfo,meta: {isLogin: 2}},
			{path:'goodscommen',component: GoodsComment,meta: {isLogin: 2}}],
			},
		{path:'/login',component: Login,meta: {isLogin: 1}},
		{path:'/login/register',component: Register,meta: {isLogin: 1}},
		{path:'/login/member',component: Member,meta: {isLogin: 0}},
	]

meta: —— isLogin 未设置表示 0

可以访问不可以访问
登陆01
未登陆10
无论是否登陆2X(不存在此状态)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值