0

我已经建立了一个使用 Spring Security 插件的 Grails 应用程序。我使用插件设置的默认值。

当他们在登录屏幕上单击按钮继续时,我一生都无法弄清楚 Spring Security 在罐装代码中实际检查用户密码的位置。

插件附带的完整代码在这里,但是(我认为是)相关代码如下:

/**
* Show the login page.
*/
def auth = {
    def config = SpringSecurityUtils.securityConfig

    if (springSecurityService.isLoggedIn()) {
        redirect uri: config.successHandler.defaultTargetUrl
        return
    }

    String view = 'auth'
    String postUrl = "${request.contextPath}${config.apf.filterProcessesUrl}"
    render view: view, model: [postUrl: postUrl,
    rememberMeParameter: config.rememberMe.parameter]
}

我已经搜索并阅读了几个小时的 Grails 和 Spring Security 文档,但我无法破解代码。任何帮助表示赞赏。

4

1 回答 1

0

它没有,这是由 Spring Security 处理的。登录控制器不进行身份验证,它只显示登录页面,处理重定向等。身份验证由拦截/j_spring_security_checkURI 的过滤器处理(您可以通过查看 /login/auth 的源代码看到这是 URI表格张贴到)。

filter ( org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter) 委托给passwordEncoderbean,org.springframework.security.authentication.encoding.MessageDigestPasswordEncoder默认情况下它是 a ,但可以是 agrails.plugins.springsecurity.BCryptPasswordEncoder或自定义实现。

于 2013-05-01T01:43:25.423 回答