我正在尝试将pac4j http:2.31升级到5.3.1,需要帮助处理Authenticator
接口中validate()
函数的参数列表中的一个突发更改。
以前我使用的是Authenticator(org.pac4j.core.credentials.authenticator.Authenticator)
,方法是public void validate(TokenCredentials credentials, WebContext context)
,现在改为public void validate(Credentials credentials, WebContext context, SessionStore sessionStore)
下面的早期代码:
private static class TestAuthenticator implements Authenticator<TokenCredentials>
{
@Override
public void validate(TokenCredentials credentials, WebContext context)
{
if (TEST_TOKEN.equals(credentials.getToken()))
{
credentials.setUserProfile(mockUserProfile());
}
}
}
所以我的问题是,如何升级到5.3.1的最新版本。其中Authenticator
类的validate方法具有Credential
参数而不是TokenCredential
?既然validate方法参数已更改,我们现在如何验证令牌?
由于Credentials
是TokenCredentials
的超类,因此您似乎可以执行以下操作:
private static class TestAuthenticator implements Authenticator {
@Override
public void validate(Credentials credentials, WebContext context, SessionStore sessionStore) {
TokenCredentials tokenCredentials = (TokenCredentials) credentials;
if (TEST_TOKEN.equals(tokenCredentials.getToken())) {
tokenCredentials.setUserProfile(mockUserProfile());
}
}
}
不过,如果我错过了什么,请道歉。似乎从Authenticator
中删除了泛型类型,这意味着现在需要强制转换。