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:

oauth2.0第三方开放平台授权
http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

1、设计一个授权接口,需要用户登录的token和相关授权方的信息
授权成功后,数据库保存相关token,时效和授权方信息,和访问资源
2、设计一个授权界面,第三方传入自己信息跳转进入,授权时验证用户信息返回第三方授权token
3、授权token可以访问授权相关的资源权限

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,147评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,281评论 25 708
  • 1.回放我在事件当中的是什么样的情绪。 和谐,幸福 今天早上买猪蹄回来,进门家长就接上袋子开始邦忙收拾上锅焯水,接...
    李侠君阅读 156评论 0 0
  • 关于颜色 概念 色彩计算 建立自己的色库 关于色彩,其实一般的PS教程都会有讲到,看到觉得讲的最好的就是李涛的Ps...
    大梦Power阅读 558评论 2 0

友情链接更多精彩内容