簡體   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