AuthenticationToken 用于收集用户提交的身份(如用户名)及凭据(如密码)。Shiro会调用CredentialsMatcher
对象的doCredentialsMatch
方法对AuthenticationInfo
对象和AuthenticationToken
进行匹配。匹配成功则表示主体(Subject)认证成功,否则表示认证失败。
public interface AuthenticationToken extends Serializable {
Object getPrincipal(); //身份
Object getCredentials(); //凭据
}
public interface HostAuthenticationToken extends AuthenticationToken {
String getHost();// 获取用户“主机”
}
public interface RememberMeAuthenticationToken extends AuthenticationToken {
boolean isRememberMe();// 记住我
}
Shiro 仅提供了一个可以直接使用的 UsernamePasswordToken
,用于实现基于用户名/密码主体(Subject)身份认证。UsernamePasswordToken
实现了 RememberMeAuthenticationToken
和 HostAuthenticationToken
,可以实现“记住我”及“主机验证”的支持。
总结
一般情况下UsernamePasswordToken
已经可以满足我们的大我数需求。当我们遇到需要声明自己的Token类时,可以根据需求来实现AuthenticationToken
,HostAuthenticationToken
或RememberMeAuthenticationToken
。
- 如果不需要“记住我”,也不需要“主机验证”,则可以实现
AuthenticationToken
; - 如果需要“记住我”,则可以实现
RememberMeAuthenticationToken
; - 如果需要“主机验证”功能,则可以实现
HostAuthenticationToken
; - 如果需要“记住我”,且需要“主机验证”,则可以像
UsernamePasswordToken
一样,同时实现RememberMeAuthenticationToken
和HostAuthenticationToken
。 - 如果需要其他自定义功能,则需要自己实现。
网友评论