2

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

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

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

  • 电话号码
  • 圣杯很酷

所以我输入:

grails s2ui-override register packageName

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

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

4

1 回答 1

2

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

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

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

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

希望这可以帮助。

编辑:

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

您可以通过将其添加到以下内容来覆盖默认 Spring Security UIUser和类:RoleUserRoleConfig.groovy

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域类中,您还需要将验证逻辑添加到RegisterControllersCommand以处理这些额外的字段。

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

于 2013-07-05T07:33:09.573 回答