我有一个使用struts 2 TokenSessionStoreInterceptor
的项目。我假设这个拦截器在它认为令牌无效的情况下会显示一个动作错误(它不仅仅是双重提交但令牌从不存在的情况)。我注意到父类TokenInterceptor
有一个可以覆盖的资源密钥,以提供国际化或自定义错误消息。有没有办法让TokenSessionStoreInterceptor
使用相同的资源键?
我最终使用我自己的类扩展了TokenSessionStoreInterceptor
并且只覆盖了handleInvalidToken()
方法,调用了super,如果super返回了无效的令牌结果,则添加了操作错误。比如我下面的内容:
public class CustomTokenSessionStoreInterceptor extends TokenSessionStoreInterceptor {
@Override
protected String handleInvalidToken(final ActionInvocation invocation) throws Exception {
final String result = super.handleInvalidToken(invocation);
if (INVALID_TOKEN_CODE.equals(result)) {
final String errorMessage = this.getErrorMessage(invocation);
Object action = invocation.getAction();
if (action instanceof ValidationAware) {
((ValidationAware) action).addActionError(errorMessage);
}
}
return result;
}
}
我很惊讶默认情况下没有这样做,是否有内置的方法来提供此功能?