使用 SpringSecurityCore 引导程序
Posted
技术标签:
【中文标题】使用 SpringSecurityCore 引导程序【英文标题】:Using SpringSecurityCore bootstrap 【发布时间】:2012-11-14 11:04:13 【问题描述】:最近刚开始在 Groovy 中编程并且已经卡住了。我正在尝试创建可在我的引导程序中登录的用户,我看过许多教程,尽管复制和粘贴代码,但我还是遇到了许多错误。我现在已经开始编写似乎可以运行但用户根本不存在的代码。
我做错了什么?
import grails.timesecurity.*
import timetracker2.*
class BootStrap
def springSecurityService
def init = servletContext ->
def examples = [
'rob' : [username: 'rob', password: 'password']
]
def userRole = Authority.findByAuthority("ROLE_USER") ?: new Authority(authority: "ROLE_USER").save()
def adminRole = Authority.findByAuthority("ROLE_ADMIN") ?: new Authority(authority: "ROLE_ADMIN").save()
if(!Person.count())
userRole = new Authority(authority: 'ROLE_USER').save()
//String password = springSecurityService.encodePassword('password')
def user = new Person(
username: "Rob",
password: springSecurityService.encodePassword("Password"),
enabled: true
)
PersonAuthority.create user, userRole
//def user = new Person['Rob', password, enabled: true].save()
def destroy =
能帮上忙的都是传奇!
【问题讨论】:
【参考方案1】:您不会在 Person 实例上调用 save()
。但是,一旦解决了这个问题,您将无法登录,因为您正在关注旧的教程或博客文章,并且您正在明确编码密码。但是生成的 Person 类已经这样做了,所以它会被双重编码。为了进一步混淆,您正在使用 ROLE_USER 创建第二个权限。
试试这个:
def userRole = Authority.findByAuthority("ROLE_USER") ?: new Authority(authority: "ROLE_USER").save()
def adminRole = Authority.findByAuthority("ROLE_ADMIN") ?: new Authority(authority: "ROLE_ADMIN").save()
if (!Person.count())
def user = new Person(
username: "Rob",
password: "Password",
enabled: true).save()
PersonAuthority.create user, userRole
【讨论】:
【参考方案2】:首先,我打赌你需要在新的Person
上致电save()
。之后,确保您的 Person
对象正在验证。
【讨论】:
以上是关于使用 SpringSecurityCore 引导程序的主要内容,如果未能解决你的问题,请参考以下文章
会话超时后重定向(Grails、Spring Security Core、Tomcat)
Grails:Spring Security Core 自定义身份验证 getUserByUserName 返回 null 对象
Thymeleaf 和 Spring 引导以及 Spring 安全性不起作用