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 に追加しようとしましたが、まだうまくいきません。