【问题标题】:How to customize Spring Security UI adding fields如何自定义 Spring Security UI 添加字段
【发布时间】:2013-07-02 18:28:07
【问题描述】:

我已经安装了 Spring Security UI。它使用默认字段:

  • 用户名
  • 电子邮件
  • 密码
  • 密码2

我想添加更多字段。例如:

  • 电话号码
  • grailsIsCool

所以我输入:

grails s2ui-override register packageName

它创建了一个空类,它扩展了:grails.plugins.springsecurity.ui.RegisterController

正确的做法是将扩展类的所有代码复制粘贴到默认字段一起出现的地方(用户名、电子邮件、密码和密码2)然后,添加新字段在他们之后?(phoneNumber 和 grailsIsCool)。 Alain Perry 采用了这种方法,并在此处发布了代码:http://grails.1312388.n4.nabble.com/Using-spring-security-UI-with-customized-user-class-td2330737.html

【问题讨论】:

    标签: grails spring-security grails-plugin


    【解决方案1】:

    我认为这是一个很好的问题。

    我大约 5 个月前开始使用 Grails,我做的第一件事就是安装 Spring Security 和 Spring Security UI。我最初使用插件提供的RegisterController,但最终我重写了大部分。

    UI RegisterController 包含很多业务逻辑 - 我更喜欢让我的控制器尽可能地笨拙,所以我创建了一个 RegistrationService 并将我需要的 RegisterController 代码移到那里。

    另一个问题是RegisterController 使用grails 命令对象模式。当我将我的应用程序部署到 CloudFoundry 时遇到了问题,但不知道为什么。后来我读到其他人有experienced the same issue。简单的解决方法,但它让我摸不着头脑......

    希望这会有所帮助。

    编辑:

    那么,关于您的实际问题。我想当我需要添加字段或自定义插件的工作方式时我采取的方法就是编写我自己的实现。

    您可以通过将其添加到 Config.groovy 来覆盖默认 Spring Security UI UserRoleUserRole 类:

    grails.plugins.springsecurity.userLookup.userDomainClassName = 'com.myapp.MyUser'
    grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'com.myapp.MyUserRole'
    grails.plugins.springsecurity.authority.className = 'com.myapp.MyRole'
    

    如果您需要额外的字段,只需将它们添加到您的User 域类中,您还需要将验证逻辑添加到RegisterControllerCommands 以​​处理这些额外的字段。

    至于将您的Commands 拉出作为顶级类,我只是将我的与控制器放在同一个包中。需要注意的一点是,由于它们不再位于您的控制器中,因此需要向它们添加 @grails.validation.Validateable 注释,否则它们在运行时将无法使用各种验证方法。

    【讨论】:

    • 很高兴知道。谢谢!所以,如果我得到Incompatible object argument for function call error,我应该创建两个单独的类:RegisterCommandResetPasswordCommand。但是哪里?另一方面,我写信给插件作者here
    • 用一些关于如何扩展默认 Spring Security UI 用户实现的更多信息更新了我的答案。
    • 我相信您的回答对很多人都会非常有用!对我来说也是 :) 但可以肯定的是,您与RegisterController.groovy 使用相同的包:RegisterCommand.groovyResetPasswordCommand(带有@grails.validation.Validateable)。如果对你来说没问题,让我们等待几天插件作者的回答。我仍然相信添加字段的“神奇”方式......
    猜你喜欢
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 2014-01-02
    • 2016-05-20
    • 2022-01-10
    • 1970-01-01
    • 2012-09-12
    相关资源
    最近更新 更多