我正在自己的本地计算机和Linux服务器上进行项目。
我有以下奇怪的问题:
authentication.principal
上正确返回我已登录的用户。代码完全相同,项目是一样的。唯一的区别是操作系统和底层JDK。
在我自己的本地计算机上,返回正确主体的唯一位置是void onApplicationEvent(AuthenticationSuccessEvent event) {
方法。 event.source.principal
是正确的而不是anonymousUser
。
我添加了一个似乎有用的黑客并强制使用正确的主体。登录后是否会导致注销?
以下似乎暂时解决了这个奇怪的问题:
void onApplicationEvent(AuthenticationSuccessEvent event) {
log.debug("AuthenticationSuccessEvent, setting session")
//Handles strange fringe case where personService.currentPerson returns anonymousUser even though login has taken place
if(grailsApplication.config.debugForceReauthenticationWithPrinciple)springSecurityService.reauthenticate personService.getCurrentPerson(event.source.principal, true).username
pService.setupSession(pService.getCurrentPerson(event.source.principal, true), session)
澄清一下,问题是即使我已登录(在我自己的计算机上),springSecurityService.getPrincipal()
也会返回anonymousUser
。