此代码使用Spring Security Plugin(acegi)获取当前登录的用户:
def principalInfo = authenticateService.principal()
def person = null
if (principalInfo != "anonymousUser" && principalInfo.username) {
person = Person.findByUsername(principalInfo.username)
}
我希望这样做:
session.user = person
这需要在用户登录后完成。我无法弄清楚我的代码在哪里执行此操作。它似乎应该是登录控制器中的某个位置,但我看不到在哪里。
答案 0 :(得分:1)
你为什么要这样做?该人已经与会议中的校长联系。调用authenticateService.userDomain()来访问它。
答案 1 :(得分:0)
Spring不会直接在会话中设置用户对象。但是,他们在会话中放置了一个SPRING_SECURITY_CONTEXT对象。这包含经过身份验证的用户。
以下内容适用于您的gsp:
${session.SPRING_SECURITY_CONTEXT?.authentication?.authenticated}
或直接在您的控制器代码中。 我在导航插件中使用它来显示某些菜单:
static navigation = [
group:'tabs',
order:10,
isVisible: { session.SPRING_SECURITY_CONTEXT?.authentication?.authenticated }
]
并且,为了回答你的问题,你可以获得这样的用户对象:
session.SPRING_SECURITY_CONTEXT?.authentication?.principal?