使用 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 安全性不起作用

Angular2 beta - 引导 HTTP_PROVIDERS - “意外令牌 <”

在grails 2.2.4 spring security core 2.0中配置ldap?