shiro核心组件
subject
包含了身份和凭证两个信息
SecurityManager
安全管理器,shiro所有操作都在安全管理器的保护之下
Realm
可以理解为是shiro的数据源,主要用于获取认证凭证和权限信息。可以配置多个Realm。
认证和授权流程
认证
登录请求过来后,调用主题(subject)中的login方法,然后到安全管理器(SecurityManager)调用认证器(Authenticator),最终认证动作会交给Realm中的认证方法来执行,这里是我们需要自己定义认证策略的地方。认证通过后通知前端登录成功并返回登录用户信息给前端;认证失败后可以进行其他操作,如给出相应的提示等。
授权
和认证一样需要再Realm中定义授权策略,但是该策略不会登录后立即执行,而是在判断权限的时候去执行这个授权策略,判断权限可以是在后端拦截器中,也可以是在前端代码中使用shiro标签来完成。
内置过滤器
shiro有 11 个内置过滤器,分别是:
- ssl :只有请求协议是https才能访问
- user :用户身份过滤器,用户身份已认证或记住该用户的都可以访问
- anon :匿名过滤器,不需要登录即可访问
- port :端口过滤器,指定的端口才可访问
- rest :rest风格拦截器,自动根据请求方法构建权限字符串,满足权限匹配才可以访问
- authc :认证过滤器,必须认证后才可访问
- perms :权限过滤器,必须有指定权限才可访问
- roles :角色过滤器,必须有指定角色才可访问
- logout :登出过滤器,执行后直接跳转到设置的登录url
- authcBasic :httpBasic 身份验证拦截器
- noSessionCreation :不创建session过滤器,指定路径下无法创建session