【发布时间】:2012-06-08 04:22:51
【问题描述】:
我正在使用 Spring Security Core 插件,并且可以成功地将用户登录和注销我的应用程序。但是,当用户成功注册时,我不明白如何在注册回发中设置该用户的安全上下文,以便他们可以重定向到安全页面而无需再次登录。欢迎任何帮助。谢谢。
【问题讨论】:
标签: security grails plugins login spring-security
我正在使用 Spring Security Core 插件,并且可以成功地将用户登录和注销我的应用程序。但是,当用户成功注册时,我不明白如何在注册回发中设置该用户的安全上下文,以便他们可以重定向到安全页面而无需再次登录。欢迎任何帮助。谢谢。
【问题讨论】:
标签: security grails plugins login spring-security
我最终找到了这个链接,它可以解决问题:https://stackoverflow.com/a/7112838/469106
以下是该链接的内容:
如果没有密码,可以通过
加载用户def user = User.findByUsername(username)
并在三参数构造函数中设置权限数组。通过
创建身份验证GrantedAuthority[] auths = user.authorities.collect { new GrantedAuthorityImpl(it.authority) }
然后你可以省略对 authenticate() 的调用并使用:
SecurityContextHolder.context.authentication = new UsernamePasswordAuthenticationToken(username, 'unknown', auths)
【讨论】:
您引用的另一个链接已有 2 年历史。从那时起,我向 SpringSecurityService 添加了一个reauthenticate 方法。请参阅文档中的“6.2 SpringSecurityService”部分:
http://grails-plugins.github.com/grails-spring-security-core/docs/
【讨论】:
springSecurityService.reauthenticate userInstance.username,SecurityContext 怎么知道用户名有什么权限?这是用户自从他们是全新用户以来将进行的第一次身份验证调用。