检查用户是否使用过滤器内的spring security进行了身份验证

时间:2013-01-31 13:03:14

标签: grails spring-security grails-plugin

我正在尝试在我的grails应用程序的src目录中的groovy类中执行此操作。

它是Filter。该课程如下:

class Proxy implements Filter {
}

init方法中,我使用的是springSecurityService bean:

GrailsApplication application = org.codehaus.groovy.grails.commons.ApplicationHolder.getApplication()
springSecurityService = application.getMainContext().getBean("springSecurityService")

在我doFilter内部,我试图找出用户是否已经过身份验证。我试过了:

springSecurityService.isLoggedIn()

但它总是返回false

我犯了错误?

提前致谢。

2 个答案:

答案 0 :(得分:0)

尝试使用SecurityContextHolder

SecurityContextHolder.getContext().getAuthentication()

(但这是Java;我确信你可以找到类似的东西)

答案 1 :(得分:0)

过滤器的顺序是否可能不正确?在Spring Security Filter之后需要调用您的自定义Filter。如果您在过滤器中执行new Exception().printStackTrace(),您是否在堆栈中看到SecurityContextPersistenceFilter?如果没有,那么您需要将过滤器(代理)更改为springSecurityFilterChain之后。