繁体   English   中英

使用Spring Security在Grails 2.5.5上登录失败时获取用户名

[英]Get username on failed login on Grails 2.5.5 w/ Spring Security

我需要在登录尝试失败时捕获用户名,以进行分析以检测攻击和用户登录我的应用程序时可能遇到的问题。

在针对所有控制器和动作的过滤器上,我使用域类ActivityLog创建了一个日志,其中存储了每个请求的所有请求/参数数据。 当我尝试从登录控制器获取操作的用户名时,该用户名既不在params上,也不在j_username上。

如何从过滤器中获取登录失败时使用的用户名?

参数看起来像:[login_error:1,action:auth,controller:login]

我试图从GrailsAnonymousAuthenticationToken获取信息,但用户名是grails.anonymous.user

简短的答案是您无法在过滤器中获取该信息。

长的答案是使用Spring安全核心插件中内置的事件,让Grails对失败的身份验证事件做出反应。

这是Grails 2.4.x应用程序的示例

// Config.groovy
grails.plugin.springsecurity.apf.storeLastUsername = true // this is now needed with updated version of spring security
grails.plugin.springsecurity.useSecurityEventListener = true
grails.plugin.springsecurity.onInteractiveAuthenticationSuccessEvent = { e, appCtx ->
    // Successful login stuff in here

}
grails.plugin.springsecurity.onAbstractAuthenticationFailureEvent = { e, appCtx ->
  // Failed login stuff in here
  // e.getAuthentication().getPrincipal() contains the principal object
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM