【问题标题】:GRAILS Spring Security PluginsGRAILS Spring 安全插件
【发布时间】:2015-08-07 06:16:23
【问题描述】:

我正在为我的 grails 应用程序使用 spring security 插件,但我需要在身份验证之前对用户名进行预处理,例如如果用户输入“域\用户名”,我只需要删除域。

我正在使用这些插件

    compile ":spring-security-core:2.0-RC5"
    compile ":spring-security-ldap:2.0-RC2"

另外,我无法添加自定义表单,我需要为此使用基本身份验证。谢谢。

【问题讨论】:

  • 我需要重写任何过滤方法吗?
  • 你可以覆盖 UserDetailsS​​ervice
  • 对于自定义表单,您只需覆盖LoginController 和安全插件的视图

标签: spring spring-mvc grails spring-security spring-ldap


【解决方案1】:

我自己还没有这样做,但我可以让您大致了解您需要做什么。

LoginController 不处理来自登录表单的 HTTP POST。正如您在身份验证方法here 中看到的那样,HTTP POST url 来自配置条目。 URL 可能是 /j_spring_security_check。该 URL 对应于 Spring Security 过滤器,而不是 Grails 控制器方法。本质上,您需要设置一个过滤器来拦截 /j_spring_security_check 并从用户名中剥离域。

有很多关于这些过滤器的知识。我还在搞清楚,但一个很好的资源是Spring Security Reference。 Twitter Auth 插件子类AbstractAuthenticationProcessingFilter,实现attemptAuthentication(),然后使用SpringSecurityUtils.registerFilter() 实现registers 过滤器。

【讨论】:

    【解决方案2】:

    我能够通过覆盖 BasicAuthenticationFilter 并根据我的需要将 doFilter() 方法更改为自定义方法来解决此问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-15
      • 2014-06-30
      • 2015-05-30
      • 2015-05-31
      • 2015-09-01
      • 1970-01-01
      • 2011-10-22
      • 2012-01-28
      相关资源
      最近更新 更多