我已经设置了一个使用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文档数小时,我无法破解代码。任何帮助表示赞赏。
答案 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
或自定义实现。