诊断Grails Spring Security Core登录错误的一些方法

如果你在使用Grails Spring Security Core插件并且无法认证时,很难知道从哪里开始查找原因。通常是由于旧的博客文章混淆,告诉你在创建用户时显式地加密密码,例如:
def user =newUser(username:'me', enabled:true,
     password: springSecurityService.encodePassword('password')).save()

但是生成的用户域类自动加密你的密码,所以你只需要这样做:

def user = new User(username: 'me' , password: 'password' ).save()

如果这不是问题,Spring Security 在调试级别记录很多安全日志,因此在Config.groovy 配置文件的 log4j 块中启用 配置如下:
log4j = {
    ...
    debug  'org.springframework.security'
}

很幸运,这里有一个有用的配置信号,它将会指引你正确的方向。如果不这样做,您可以设置调试器并在 org.springframework.security.authentication.ProviderManager类的authenticate方法中设置一个断点。这就是每一个注册 AuthenticationProvider的类,都有机会获得authentication 如果它支持当前的Authentication。
不是每个人都喜欢使用调试器。另一种选择是注册一个事件侦听器,查看故障事件。要访问这一插件的关于事件监听详细描述,请点击这里。这是一个简单的配置信息,将打印所有故障事件到控制台:


grails.plugin.springsecurity.useSecurityEventListener = true
grails.plugin.springsecurity.onAbstractAuthenticationFailureEvent = { e, appCtx ->
    println  "\nERROR auth failed for user $e.authentication.name: $e.exception.message\n"
}

英文原文:Some approaches for diagnosing spring-security-core login errors


你可能感兴趣的:(grails,spring,security,grails)