Shiro中的三种认证策略
:
AtLeastOneSuccessfulStrategy
:只要有一个(或更多)的 Realm 验证成功,那么认证将视为成功FirstSuccessfulStrategy
:第一个 Realm 验证成功,整体认证将视为成功,且后续 Realm 将被忽略AllSuccessfulStrategy
:所有 Realm 成功,认证才视为成功ModularRealmAuthenticator类 内置的认证策略默认实现是 AtLeastOneSuccessfulStrategy 方式 可以通过配置修改策略。
/**
* @author .29.
* @create 2024-03-17 11:14
*/
@Configuration
public class ShiroConfig {
@Autowired
private MyRealm myRealm;
//配置SecurityManager
@Bean
public DefaultWebSecurityManager defaultWebSecurityManager(){
//1. 创建DefaultWebSecurityManager对象(安全管理器)
DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager();
//2. 创建认证对象
ModularRealmAuthenticator modularRealmAuthenticator = new ModularRealmAuthenticator();
//3. 设置认证策略为AllSuccessfulStrategy
modularRealmAuthenticator.setAuthenticationStrategy(new AllSuccessfulStrategy());
//4. 将设置了认证策略的认证对象存入安全管理器
defaultWebSecurityManager.setAuthenticator(modularRealmAuthenticator);
//5. 封装Realm集合,存入多个自定义Realm
ArrayList<Realm> realms = new ArrayList<>();
realms.add(myRealm1);
realms.add(myRealm2);
realms.add(myRealm3);
//6.realm集合存入安全管理器
defaultWebSecurityManager.setRealms(realms);
//7.返回安全管理器
return defaultWebSecurityManager;
}
}