自定义MyRealm 继承AuthorizingRealm
public class MyRealm extends AuthorizingRealm {
public String getName(){
return "MyRealm";
}
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
return null;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
String username = (String)token.getPrincipal();
if (!"zhangsan".equals(username)){
return null;
}
String password="666";
SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(username, password, getName());
return info;
}
}
shiro-realm.ini配置文件绑定
#自定义realm
myRealm=com.feng.realm.MyRealm
#指定的securityManager的realm实现
securityManager.realm=$myRealm
编写测试方法
public void shiro01() {
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro-realm.ini");
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken("zhangsan", "88822");
try {
subject.login(token);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("登入是否成功" + subject.isAuthenticated());
subject.logout();
System.out.println("登入是否成功" + subject.isAuthenticated());
}