java - Grails中拦截Spring Security获取一些请求参数

标签 java grails internationalization request

我想为用户提供在登录时选择应用程序语言的可能性。但是由于我们使用的是 spring security,我真的不确定如何从请求参数中获取选定的语言参数?

有没有什么方法可以在不修改流程本身的情况下拦截 spring security 身份验证流程(因为我已经找到了一些自定义身份验证的示例,但目前不需要)?

或者在进一步重定向之前检索请求参数的最佳做法是什么?谢谢。

最佳答案

您可以在 resources.groovy 中设置您自己的(而不是默认的)身份验证成功处理程序:

authenticationSuccessHandler(MyAuthenticationSuccessHandler) {
}

其中 MyAuthenticationSuccessHandler 是实现 AuthenticationSuccessHandler 的类,或者更好地扩展默认使用的 AjaxAwareAuthenticationSuccessHandler,例如:

authenticationSuccessHandler(AjaxAwareAuthenticationSuccessHandler) {
    requestCache = ref('requestCache')
    defaultTargetUrl = conf.successHandler.defaultTargetUrl // '/'
    alwaysUseDefaultTargetUrl = conf.successHandler.alwaysUseDefault // false
    targetUrlParameter = conf.successHandler.targetUrlParameter // 'spring-security-redirect'
    ajaxSuccessUrl = conf.successHandler.ajaxSuccessUrl // '/login/ajaxSuccess'
    useReferer = conf.successHandler.useReferer // false
    redirectStrategy = ref('redirectStrategy')
}

此类可以访问以下位置的实际请求:

void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
        Authentication authentication) throws IOException, ServletException;

关于java - Grails中拦截Spring Security获取一些请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10982372/

相关文章:

java - Pig 0.13.0 错误 :ERROR 2998: Unhandled internal error. org/apache/commons/io/input/ClassLoaderObjectInputStream

java - 使用 java 创建 xml

grails - 如何从默认 Controller Action 重定向到生成的 Controller Action ?

grails - 没有为自定义操作调用Grails筛选器

xcode - 计算机辅助翻译和 Xcode

java - GWT:在 UiBinder 中动态使用 i18n

javascript - 如何将 JS 嵌套的 some() 逻辑转换为 Java

java - 数据库表架构建议

grails - 如何自动将在 resources.groovy 中声明的 Grails 组件注入(inject)到我的 IntegrationSpecs 中?

ruby-on-rails - Custom Rails I18n Locale 多元化帮助