我正在完成 Grails 中 Spring Security 的实现。这是我在 Spring Security 上的第一个实现 - 以前我使用 Acegi。
这就是我遇到的问题。在 Acegi 中,我能够通过访问 SecurityContextHolder、获取用户原则,然后从数据库中获取“实时”用户,从而在 onInteractiveAuthenticationSuccessEvent() 回调中检索经过身份验证的用户。在 Spring Security 中,SecurityContextHolder 似乎不可用 - 当我尝试访问它时,我收到低级别的 Grails 提示,说在某某对象上没有这样的方法。
所以,我的问题:
谢谢,
担
最佳答案
您可能需要更新导入 - 它从 Spring Security 2 更改为 3 - 现在是 org.springframework.security.core.context.SecurityContextHolder
但方法没有改变。
但是使用 springSecurityService 会更干净,它可以使用 appCtx
从事件回调中访问。多变的:
onInteractiveAuthenticationSuccessEvent = { e, appCtx ->
def principal = appCtx.springSecurityService.principal
def user = User.get(principal.id)
}
关于grails - 在 Grails Spring Security 身份验证期间获取 Principal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3356170/