java类设计分析_java 权限设计方案分析

方案1:

数据库设计:用户表(拥有角色id),角色表,权限表(权限标识,名称,父子层级),角色和权限关联表

token内存放userid,uuid,权限标识符数组。

配置文件中可配置接口path和权限标识的对应关系并增加自定义注解关联权限标识和path

1、启动时扫描接口path注解和配置文件,生成权限标识和接口path的映射缓存池

2、登录时判断账号密码正确,读取相关的角色权限信息,将所有权限标识生成token缓存redis,以作权限过滤使用

3、界面展示权限,根据权限标识符是否存在界面判断界面是否渲染相应内容

4、接口权限,请求权限接口是需要将token放入请求头中

使用web拦截器,拦截请求判断请求path在权限池中是否存在,存在则需要做权限判断。根据token中的权限标识判断是否拥有该权限的权限作出限制处理。

细节点:自定一个授权注解,方法上写该注解的不进行token校验,没有的全部进行token校验。权限池中没有的path之校验token是否有效,在权限池中的path需要校验token是否拥有该权限

自定义一个用户信息注解,利用参数解析器HandlerMethodArgumentResolver自动增加该信息,避免用户上传信息

方案2:

shiro使用

数据库设计:用户表(拥有角色id),角色表,权限表(权限标识,名称,父子层级),角色和权限关联表

1、界面根据权限标识判断是否显示,接口在配置文件中配置相关path的权限标识

2、实现AuthorizingRealm,登录时将用户所有的权限标识存入,类似于redis存入。登录成功后根据此处的权限标识和配置进行权限限制

方案3:

1、设计一个授权接口,需要用户登录的token和相关授权方的信息

授权成功后,数据库保存相关token,时效和授权方信息,和访问资源

2、设计一个授权界面,第三方传入自己信息跳转进入,授权时验证用户信息返回第三方授权token

3、授权token可以访问授权相关的资源权限

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值