繁体   English   中英

用Grails中的Spring-Security-Rest插件拦截登录呼叫

[英]Intercepting login calls with Spring-Security-Rest plugin in Grails

我正在使用Grails的spring security rest插件为AngularJS应用提供登录机制。 登录工作正常,但是我不知道如何拦截登录呼叫,以便存储有关(无效/有效)登录尝试的其他统计信息。

由于我对Spring Security非常陌生,所以我对它的过滤器链并不熟悉。 是否可以编写一个自定义过滤器来拦截登录呼叫而不干扰插件的操作模式,还是有一种更好的方法来实现我想做的事情?

我看到Spring Security Rest插件有一个名为RestAuthenticationSuccessHandler的类,该类实现Spring Security的AuthenticationSuccessHandler接口。 我可以提供插件使用的类的自定义实现吗?

我的配置:

grails.plugin.springsecurity.rememberMe.persistent = false
grails.plugin.springsecurity.rest.login.useJsonCredentials = true
grails.plugin.springsecurity.rest.login.failureStatusCode = 401
grails.plugin.springsecurity.rest.token.storage.useGorm = true
grails.plugin.springsecurity.rest.token.storage.gorm.tokenDomainClassName = 'example.auth.AuthenticationToken'
grails.plugin.springsecurity.rest.token.storage.gorm.tokenValuePropertyName = 'token'
grails.plugin.springsecurity.rest.token.storage.gorm.usernamePropertyName = 'username'

grails.plugin.springsecurity.filterChain.chainMap = [
    '/auth/**': 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter, -rememberMeAuthenticationFilter', // Stateless chain
    '/api/**': 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter', // Stateless chain
    '/**': 'JOINED_FILTERS,-restTokenValidationFilter,-restExceptionTranslationFilter'   // Traditional chain
]

grails.plugin.springsecurity.rest.login.active=true
grails.plugin.springsecurity.rest.login.useJsonCredentials=true
grails.plugin.springsecurity.rest.token.storage.useGorm=true
grails.plugin.springsecurity.rest.token.generation.useSecureRandom=true
grails.plugin.springsecurity.rest.token.validation.headerName='X-Auth-Token'
grails.plugin.springsecurity.rest.token.generation.useUUID=false
grails.plugin.springsecurity.rest.token.validation.active=true
grails.plugin.springsecurity.rest.token.validation.endpointUrl='/auth/validate'

是的,您可以提供一个实现RestAuthenticationSuccessHandler的自定义bean。 查看该类的API文档 ,以了解需要实现的内容。 然后,就像在应用程序上下文中覆盖Bean一样简单:

// Resources.groovy
restAuthenticationSuccessHandler(MyCustomRestAuthenticationSuccessHandler) {
  renderer = ref('accessTokenJsonRenderer')
}

查看默认的实现可能也会有所帮助。

暂无
暂无

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

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