-
Notifications
You must be signed in to change notification settings - Fork 122
M、扩展
wangjie edited this page Dec 25, 2019
·
1 revision
组件的扩展是通过ShiroCustomizer实现
@Configuration
public class ApplicationConfig{
@Bean
public ShiroCustomizer shiroCustomizer() {
ShiroCustomizer customizer = new ShiroCustomizer();
// 设置账号数据提供服务
customizer.setShiroAccountProvider(accountProviderImpl);
// 设置加密实现
//customizer.setPasswordProvider(myDESPasswordProvider);
// 设置验证码实现
customizer.setCaptchaProvider(myCaptchaService);
// 设置密码输入错误次数超限处理器
customizer.setPasswdRetryLimitListener(passwdRetryLimitHandler);
// 设置鉴权规则数据提供服务
customizer.setShiroFilteRulesProvider(filteRulesProviderImpl);
// 设置无状态鉴权(HMAC\JWT)专用的账号数据提供服务
customizer.setShiroStatelessAccountProvider(statelessAccountProviderImpl);
// 添加认证监听器
customizer.addAuthListener(authListenerImpl1);
customizer.addAuthListener(authListenerImpl2);
// 添加Session监听器
customizer.addSessionListener(sessionListenerImpl1);
customizer.addSessionListener(sessionListenerImpl2);
//如需要定制RememberMe Cookie的name、domain、httpOnly可使用此方法
customizer.setRememberMeCookie(SimpleCookie)
// 如果组件提供的session缓存方式(内存、ehcache、redis)无法满足需求,可设置此项定制session持久化
customizer.setSessionDAO(SessionDAO);
// 如果组件提供的缓存方式(内存、ehcache、redis)无法满足需求,可设置此项定制缓存实现
customizer.setCacheManager(CacheManager)
// 组件中提供三个控制域
// AccountPasswdRealm:有状态用户名,密码鉴权控制域
// HmacRealm:无状态hmac签名鉴权控制域
// JwtRealm:无状态jwt令牌鉴权控制域
// 如果无法满足需求,可设置此项添加鉴权控制域
customizer.addRealm(realName, Realm)
// 组件中提供的过滤器:
// authc:基于表单的登陆过滤器
// roles:基于角色的验证过滤器
// perms:基于权限的验证过滤器
// user:断言seesion中存在用户的过滤器
// keepOne:账号唯一用户登陆过滤器
// forceLogout:强制用户下线过滤器
// hmac:hmac数字签名认证过滤器
// hmacRoles:hmac数字签名角色验证过滤器
// hmacPerms:hmac数字签名权限验证过滤器
// jwt:jwt令牌认证过滤器
// jwtRoles:jwt令牌角色验证过滤器
// jwtPerms:jwt令牌权限验证过滤器
// 如果无法满足需求,可设置此项覆盖或者添加过滤器
customizer.addFilter(filterName, Filter)
return customizer;
}
}