使用Spring Security核心插件获取Grails 3应用程序中当前登录的用户列表

时间:2019-03-19 18:36:26

标签: grails spring-security

我正在运行带有以下两个插件的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插件执行此操作的分步指南吗?

谢谢!!!

0 个答案:

没有答案