RBAC角色权限

RBAC角色权限

用户

角色

权限

菜单权限

资源权限(接口)

岗位表

角色组织表

角色权限表

用户角色关联表

组织(部门)

认证流程

用户通过前端系统发送登录请求,请求中携带账号、密码、验证码等信息。

前端登录请求首先请求到网关服务,网关服务将请求路由到权限微服务。

权限微服务进行认证操作,如果认证通过则生成wt token返回给前端,同时将用户拥有的资源权限使用userld作为key保存到缓存中。

注:缓存中保存的用户资源权限是由pd_auth_resource资源表中的method和urI两个字段的值拼接成的。

例如,某个用户拥有删除日志的权限,在表中除日志权限对应一亲数据,其中method的值为DELETE,urT
的值为/optLog,那么缓存中保存的用户拥有的资源权限为:DELETE/optLog。

鉴权流程

用户认证后访问其他功能时将jwttoken放在请求头中,首先经过网关服务处理。

在网关服务的过滤器中获取请求头中的token并进行解析,将解析出的用户相关数据放在zuul的header中。(注:之所以要将用户相关数据放在zuu]的neader中,是因为在后续的网关AccessFi1ter过滤器和权限服务中都会使用到这些数据。)

在网关服务的过滤器中进行鉴权相关处理。

  • 第1步:判断当前请求ur1是否需要忽略
  • 第2步:获取当前请求的请求方式和uri,拼接成GET/user/page这种形式,称为权限标识符
  • 第3步:从缓存中获取所有需要进行鉴权的资源(同样是由资源表的method字段值+ur1字段值拼接成),如果没有获取到则通过Feign调用权限服务获取并放入缓存中
  • 第4步:判断这些资源是否包含当前请求的权限标识符,如果不包含当前请求的权限标识符,则返回未经授权错误提示
  • 第5步:如果包含当前的权限标识符,则从zuu1 header中取出用户d,根据用户id取出缓存中的用户拥有的权限,如果没有取到则通过Feign调用权限服务获取并放入缓存,判断用户拥有的权限是否包含当前请求的极限标识符
  • 第6步:如果用户拥有的权限包含当前请求的权限标识符则说明当前用户拥有权限,直接放行
  • 第7步:如果用户拥有的权限不包含当前请求的权限标识符则说明当前用户设有权限,返回未经授权错误提示

本文整理自黑马品达权限通用管理系统

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值