我正在运行带有以下两个插件的grails Web应用程序(Grails版本3.3.9):spring-security-core:3.2.3和spring-security-ui:3.1.2 我想在控制器中查看当前登录用户的列表。我尝试了此处提出的方法: https://classpattern.com/spring-security-sessionregistry-on-grails http://krixisolutions.com/find-logged-users-grails-application/ 但这对我不起作用。我认为这些方法适用于Grails的早期版本?
具体地说,在resources.groovy中,我有以下内容:
import org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy
import org.springframework.security.web.session.ConcurrentSessionFilter
import org.springframework.security.core.session.SessionRegistryImpl
import org.springframework.security.web.authentication.session.SessionAuthenticationStrategy
beans = {
sessionRegistry(SessionRegistryImpl)
sessionAuthenticationStrategy(ConcurrentSessionControlStrategy, sessionRegistry) {
maximumSessions = -1
}
concurrentSessionFilter(ConcurrentSessionFilter){
sessionRegistry = sessionRegistry
expiredUrl = '/login/concurrentSession'
}
}
但是当我尝试编译时,它给了我错误:
unable to resolve class org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy.
我在一个网站上发现不推荐使用ConcurrentSessionControlStrategy
,所以我将其替换为org.springframework.security.web.authentication.session.ConcurrentSessionControlAuthenticationStrategy
(也在Bean中),但现在却出现了错误:
Error creating bean with name 'concurrentSessionFilter': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.web.session.ConcurrentSessionFilter]: No default constructor found; nested exception is java.lang.NoSuchMethodException: org.springframework.security.web.session.ConcurrentSessionFilter.<init>()
任何人都可以为我提供有关如何使用Grails 3和当前的Spring Security插件执行此操作的分步指南吗?
谢谢!!!