微服务 教程
1085个小节阅读:196.4k
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
如果有多个Realm,怎样才能认证成功,这就是认证策略。认证策略主要使用的是 AuthenticationStrategy
接口,这个接口有三个实现类:
策略 | 意义 |
---|---|
AtLeastOneSuccessfulStrategy(默认) | 只要有一个Realm验证成功即可,返回所有成功的认证信息 |
FirstSuccessfulStrategy | 只要有一个Realm验证成功即可,只返回第一个成功的认证信息,其他的忽略 |
AllSuccessfulStrategy | 所有Realm验证成功才算成功,如果有一个失败则认证失败 |
xxxxxxxxxx
// Realm管理者
public ModularRealmAuthenticator modularRealmAuthenticator(){
ModularRealmAuthenticator modularRealmAuthenticator = new ModularRealmAuthenticator();
//设置认证策略
modularRealmAuthenticator.setAuthenticationStrategy(new AtLeastOneSuccessfulStrategy());
return modularRealmAuthenticator;
}
// SecurityManager对象
public DefaultWebSecurityManager getDefaultWebSecurityManager(MyRealm realm, MyRealm2 realm2){
DefaultWebSecurityManager defaultSecurityManager = new DefaultWebSecurityManager();
// 设置Realm管理者(需要在设置Realm之前)
defaultSecurityManager.setAuthenticator(modularRealmAuthenticator());
List<Realm> realms = new ArrayList();
realms.add(realm);
realms.add(realm2);
defaultSecurityManager.setRealms(realms);
return defaultSecurityManager;
}
在ModularRealmAuthenticator
中的doMultiRealmAuthentication
方法中添加断点可以查看认证通过信息
实时效果反馈
1. 在Shiro中,在对象中配置认证策略
A ModularRealm
B ModularAuthenticator
C RealmAuthenticator
D ModularRealmAuthenticator
2. 在Shiro中,所有Realm验证成功才算成功的认证策略为
A AtLeastOneSuccessfulStrategy
B FirstSuccessfulStrategy
C AllSuccessfulStrategy
D 以上说法都不对
答案
1=>D 2=>C