Spring Boot用户角色和权限管理
对于理论上来说,用户角色和权限,三张表就可以搞定了全部的权限问题。权限主要分为:页面权限、数据权限和操作权限。基于角色的权限控制(RBAC)
1.RBAC模型:基于用户-角色-权限控制的一些思考
2.总结:SAAS后台权限设计案例分析 (这篇文章对角色和权限的说明比较的丰富)
3.springBoot+springSecurity 数据库动态管理用户、角色、权限(二 (这个可以作为实际代码的参考)
4.最好的权限设计,是先区分功能权限和数据权限
5.Java快速开发平台 (这个其实是一个脚手架,装配了各种数据库权限啊,内容管理啊,有点像cms的意思)
1.数据库设计
1.spring整合shiro权限管理与数据库设计 (这个写的挺全的,还有示例代码,不过是用spring写的,不是用springboot)
2.胡汉三已存在 / task
3.后台权限管理控制shiro-权限表设计 (具体化到了菜单级别,我觉得挺实用的,这里只是进行了数据库的设计)
4.用户权限管理数据库设计(RBAC)
5.用户·角色·权限·表 (这个设计书中加入了组的概念,即有了数据权限的概念,同时附带了一个权限设计说明书,还是蛮厉害的)
2.示例代码
在我以前的写的一篇文章中,有一些步骤可以借鉴Post not found: Spring Boot集成shiro步骤 Spring Boot集成shiro步骤
1.Shiro学习之Shiro HelloWorld 实现
3.shiro相关内容
代码的编写都是跟着需求走的,比如我需要系统同时支持用户名密码登录,也支持第三方扫码登录,比如钉钉扫码登录。该如何编写自己的权限控制呢?
(1) AuthenticationToken
Shiro 仅提供了一个可以直接使用的 UsernamePasswordToken,用于实现基于用户名/密码主体(Subject)身份认证。UsernamePasswordToken实现了 RememberMeAuthenticationToken 和 HostAuthenticationToken,可以实现“记住我”及“主机验证”的支持。
(2) 扫码登录
其实我在想,比如使用扫码登录,然后重写shiro的方法,这种思路是不是正确的呢?经过查询资料,确实有通过继承并重写UsernamePasswordToken和HashedCredentialsMatcher类方法的方式,实现了扫码登录。
1.Shiro 中的 AuthenticationToken (讲了AuthenticationToken的作用以及常用的UsernamePasswordToken)
2.PC端网站-微信扫码登录+shiro权限框架免密登录 (这里继承了HashedCredentialsMatcher和UsernamePasswordToken)
3.shiro + springBoot扫码登陆 (这里也讲到了继承UsernamePasswordToken)
4.钉钉扫码登录网站(两种方式实现)
5.Shiro学习笔记(二)UsernamePasswordToken源码简单解析
6.深入浅出学Shiro(一)–登录认证
(3) Oauth2