zilean/开发文档/20190809_Shiro.md

14 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Shiro权限管理框架
## SecurityManager
可以理解成控制中心,所有请求最终基本上都通过它来代理转发,一般我们程序中不需要直接跟他打交道。
## Subject
请求主体。比如登录用户比如一个被授权的app。在程序中任何地方都可以通过SecurityUtils.getSubject()获取到当前的subject。subject中可以获取到Principal这个是subject的标识比如登陆用户的用户名或者id等shiro不对值做限制。但是在登录和授权过程中程序需要通过principal来识别唯一的用户。
## Realm
通俗一点理解就是realm可以访问安全相关数据提供统一的数据封装来给上层做数据校验。shiro的建议是每种数据源定义一个realm比如用户数据存在数据库可以使用JdbcRealm存在属性配置文件可以使用PropertiesRealm。一般我们使用shiro都使用自定义的realm。
当有多个realm存在的时候shiro在做用户校验的时候会按照定义的策略来决定认证是否通过shiro提供的可选策略有一个成功或者所有都成功等。
## 总结
一个realm对应了一个CredentialsMatcher用来做用户提交认证信息和realm获取得用户信息做比对shiro已经提供了常用的比如用户密码和存储的Hash后的密码的对比。
## 使用Shiro主要做了三件事
1、用户登录时做用户名密码校验
2、用户登录后收到请求时做JWT Token的校验
3、用户权限的校验