0

grails 4 にアップグレードすると、sessionRegistry.getAllPrincipal() は常に空になります。

resources.groovy の元の Spring Bean は

sessionRegistry(SessionRegistryImpl)
concurrentSessionFilter(ConcurrentSessionFilter){
    sessionRegistry = sessionRegistry
    expiredUrl = '/login'
}

これが機能しなくなったので、resources.groovyをに更新しようとしました

sessionRegistry(SessionRegistryImpl) 
registerSessionAuthenticationStrategy(RegisterSessionAuthenticationStrategy, ref(sessionRegistry))
sessionFixationProtectionStrategy(SessionFixationProtectionStrategy)
concurrentSessionControlAuthenticationStrategy(ConcurrentSessionControlAuthenticationStrategy, ref(sessionRegistry)){
    maximumSessions=1
    exceptionIfMaximumExceeded=true
}
compositeSessionAuthenticationStrategy(CompositeSessionAuthenticationStrategy,
    [ref(registerSessionAuthenticationStrategy),ref(sessionFixationProtectionStrategy),ref(concurrentSessionControlAuthenticationStrategy)])

これらの Bean はすべて org.springframework.security.web.authentication.session パッケージからのものです。

grails.plugin.springsecurity.providerNames にも名前を追加しました

DaoAuthenticationProvider は、カスタム認証プロバイダーによって拡張されます。ログインとログアウトは正常に機能しますが、プリンシパルはアップグレードされたアプリに登録されません。それらを手動で登録する必要がありますか (sessionRegistry.registerNewSession())?

grails install-templates を使用してから、src/templates/war の web.xml を編集するという古い回答があります。ただし、grails 4 では、install-templates は war/web.xml を生成しませんでした。

/WEB-INF/web.xml に追加しようとしましたが、まだうまくいきません。

4

1 に答える 1