我有这个服务类:
class UserService {
def springSecurityService
@Listener(topic = 'currentUser', namespace = 'auth')
public User getCurrentUser(){
return springSecurityService.currentUser
}
def authenticate(OAuthToken oAuthToken){
SecurityContextHolder.context.authentication = oAuthToken
return springSecurityService.currentUser
}
}
如果我使用身份验证方法,springSecurityService.currentUser
则返回当前用户。但是,如果我已经登录,我想用getCurrentUser
方法获取当前用户,它返回 null。我调试了Springsecurityservice.getCurrentUser
方法,方法“isLoggedIn”返回false。
但是,如果我在我看来尝试这个,它会起作用:
<sec:ifLoggedIn>Yeeees</sec:ifLoggedIn>
更新:
当我UserService.getCurrentUser
在 SecurityService 中运行 SCH.context.authentication 时返回 null。在该调用之后,将呈现视图并SCH.context.authentication
返回正确的身份验证。
更新 2:
我分析了它,它似乎只有在我将它与事件总线一起使用时才会发生。如果我直接从控制器调用 getCurrentUser,它工作正常,但如果我使用事件总线,它不会。我使用来自平台核心插件的事件总线。Event Bus 是否还有另一个 SCH.context?