Grails - Spring Security 帐户创建

Posted

技术标签:

【中文标题】Grails - Spring Security 帐户创建【英文标题】:Grails - Spring Security Account Creation 【发布时间】:2012-06-08 04:22:51 【问题描述】:

我正在使用 Spring Security Core 插件,并且可以成功地将用户登录和注销我的应用程序。但是,当用户成功注册时,我不明白如何在注册回发中设置该用户的安全上下文,以便他们可以重定向到安全页面而无需再次登录。欢迎任何帮助。谢谢。

【问题讨论】:

【参考方案1】:

我最终找到了这个链接,它可以解决问题:https://***.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】:

您引用的另一个链接已有 2 年历史。从那时起,我向 SpringSecurityService 添加了一个reauthenticate 方法。请参阅文档中的“6.2 SpringSecurityService”部分: http://grails-plugins.github.com/grails-spring-security-core/docs/

【讨论】:

谢谢。不过,我真的不明白它是如何工作的。如果我自己打电话给springSecurityService.reauthenticate userInstance.usernameSecurityContext 怎么知道用户名有什么权限?这是用户自从他们是全新用户以来将进行的第一次身份验证调用。 阅读源代码 :) 它基本上完成了你正在做的事情,除了它从数据库加载用户。

以上是关于Grails - Spring Security 帐户创建的主要内容,如果未能解决你的问题,请参考以下文章

grails-spring-security-rest 插件和悲观锁定

Grails + spring-security-core:用户登录后如何分配角色?

Grails Spring Security注释问题

Grails spring-security-oauth-google:如何设置

Grails Spring Security 插件网址

Grails/Spring Security:无法使用新创建的用户登录