年份:2018
日期:9-2
知识:shiro
1>Shiro定义:
shiro是Apache的强大灵活的开源安全框架
Shiro主要可以用在:认证/授权/企业会话管理/安全加密等地方
2>Shiro与spring security比较
Shiro | spring security |
简单,灵活 | 复杂笨重 |
可脱离spring | 不可脱离spring |
粒度较粗 | 粒度较细 |
3>Shiro认证
认证流程
4>Shiro授权
授权流程
5>Shiro加密
5.1>Shiro-散列配置
5.2>HashedCredentialsMatcher
5.3自定义realm中使用散列
5.4>盐的使用
6 shiro与spring整合
//maven项目例:
1> 引入需要的jar
spring-context
spring-webmvc
shiro-core
shiro-spring
shiro-web
2 shiro-web.xml配置shiro过滤器
[org.springframework.web.filter.DelegatingFilterProxy]
3 spring.xml
shirofilter 对象
[org.apache.shiro.web.ShiroFilterFactoryBean]
//
过滤器链
//
securityManager对象
[org.apache.shiro.web.mgt.DefaultWebSecurityManager]
Realm
[class属性指向类]
加密
[org.apache.shiro.authc.credential.HashedCredentialsMatcher]
7 注解方式
注解:
Shiro共有5个注解
RequiresAuthentication:
使用该注解标注的类,实例,方法在访问或调用时,当前Subject必须在当前session中已经过认证。
RequiresGuest:
使用该注解标注的类,实例,方法在访问或调用时,当前Subject可以是“gust”身份,不需要经过认证或者在原先的session中存在记录。
RequiresPermissions:
当前Subject需要拥有某些特定的权限时,才能执行被该注解标注的方法。如果当前Subject不具有这样的权限,则方法不会被执行。
RequiresRoles:
当前Subject必须拥有所有指定的角色时,才能访问被该注解标注的方法。如果当天Subject不同时拥有所有指定角色,则方法不会执行还会抛出AuthorizationException异常。
RequiresUser
当前Subject必须是应用的用户,才能访问或调用被该注解标注的类,实例,方法。
8过滤器
//(1)
AuthorizatioinFilter = 授权
AuthenticatingFilter = 认证
实现自定义时,需要继承
//
[
代码逻辑
1 获取主题
2 获取角色
3 处理
3.1 是否存在角色
3.2 存在对应的角色应该怎样做
]
2 shiro-web.xml
说明:
1 = 配置自定义的filter的bean
2 =添加property属性
3 = 过滤链加入filter