asp 退出登录修改cookie能进入后台_vue项目登录鉴权+动态路由

流程图

bd8cf8bad914a4845608e7c2b360824f.png

这里用token进行鉴权主要是防止crsf攻击,crsf攻击简要介绍一下

8b482862f83f5eeb242ebe498346c24b.png

跨站脚本伪造,就是在登录安全网站之后诱导用户点击危险网站,那么危险网站就可以得到用户的cookie从而冒充用户身份对安全网站进行访问和一些违法操作。那么关键点就在于

  • 登录受信任站点 A,并在本地生成cookie;
  • 在不登出站点A(清除站点A的cookie)的情况下,访问恶意站点B。

所以防范的方法之一是用不能截取的token。

那这里用token进行验证,分为token存在和token不存在的情况

9ab38b8b8398ae805b905efb8494ec5f.png

路由守卫的三个参数如下

a8e19e0937809386c08529d212dceb84.png

需要注意的是:next()含参的话会在跳转之后再次出发拦截器钩子,而无参数的时候不会再次触发,但是拦截器一定要触发next()才能resolve,所以如果无token登录的话不能直接next('/login'),这里的做法呢是创建一个白名单路由,也就是类似于访客模式,只有少数路由如登录路由是可以访问到的

57ee75579e60a6a1c72e51158a51520c.png

indexof()用法如下,区分大小写

8501b8faaf374355c6a458a640d44b9d.png

c354231d38f2bbce7f863f316a8d97b6.png

如果token存在并且没有异常的话,那么进入页面后会通过角色分配对应的路由,这里一般是后台返回该角色对应的路由

f85b08a0da7bbba4befd7cc0e79cb17b.png

vue-router通过meta里面自定义值来分配路由,结构如下

f89bf61b2830e97a5af26b2df255587b.png

如果角色是超管的话直接用所有路由就行

数组includes()的用法

5cdd0128277d30b008c296a499e38c21.png

9965b10fb07daf8555b4f93faf288c16.png

否则就有对动态路由进行过滤,这里每一个用户都能访问默认路由,默认动态路由就是所有根据角色不同而动态分配的路由

当得到后台返回的角色数组时,对默认动态路由进行过滤,用filter函数,如果动态路由里面有后台返回的角色就留下来,如果是含有children的嵌套路由则再调用同样的方法一次就可,如果嵌套路由过多,可以用递归处理。

26c70d849d7444d2037039fcbffb4a31.png

b526d383503f9c9ae8db85f6ac92bb7d.png

数组的some函数只要有符合的值就返回true

58d39cc105fcc132ca4dd7f3a60d95bd.png

说一下这里的token因为服务器代码的原因,所以token的值是放在cookie里传回来的,如下图,

d6fa13073c5bb45f498c616584cfbfb6.png

每一次请求的时在headers里面带上token的参数,这里在请求拦截器里写上

55832643d2c1ba8eef4b9a5ce5ea7ccb.png

改好之后还要更新路由,这里更新路由要注意两个地方都要更新,否则获取不到正确的路由

比如说这里只用了addroutes添加路由但是现在打印路由的话

9c0597c425fccdb45376b6a5413bcc84.png

24c6105ae4196ccdd25ce30f1dd92b7b.png

这里只用四个路由

f018e7b9c3c43134625a4a0863b168a9.png

6c73697d1209e0a9e3f28a466855eee5.png

而手动注入之后才是正确的能访问到的七个路由

然后我又发现既然这样是不是这要更新option就行了呢?于是我又删掉了addroutes,然后我就发现了

dbc7ed2e66d45927b697681087761d36.png

所有这两个都要写上去才是正确的,至于原理之后再补充

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值