Grails中的Spring Security插件在哪里检查用户的密码?

时间:2013-05-01 01:09:56

标签: grails spring-security

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

我不能为我的生活找出弹簧安全实际检查用户密码的固定代码,当他们点击按钮继续登录屏幕时。

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

/**
* 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]
}

我用Google搜索并阅读Grails和Spring Security文档数小时,我无法破解代码。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

它并不是由Spring Security处理的。登录控制器不进行身份验证,它只显示登录页面,处理重定向等。身份验证由拦截/j_spring_security_check URI的过滤器处理(您可以通过查看/ login /的来源看到) auth,这是表单发布到的URI。

过滤器(org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter)委托给passwordEncoder bean,默认情况下为org.springframework.security.authentication.encoding.MessageDigestPasswordEncoder,但可以是grails.plugins.springsecurity.BCryptPasswordEncoder或自定义实现。