我将 Spring Security 插件与 Spring Security UI 插件结合使用。
它们都像魅力一样工作,但我的问题是我不希望我的用户拥有用户名,而是他/她应该使用电子邮件作为用户名。
所以在注册阶段我尝试从注册页面中删除用户名并设置
newUser.username = params.email
这样插件仍然可以访问变量用户名,但这给了我验证错误,我只是想不出解决它的方法。
有任何想法吗?有没有人做过类似的事情?
我将 Spring Security 插件与 Spring Security UI 插件结合使用。
它们都像魅力一样工作,但我的问题是我不希望我的用户拥有用户名,而是他/她应该使用电子邮件作为用户名。
所以在注册阶段我尝试从注册页面中删除用户名并设置
newUser.username = params.email
这样插件仍然可以访问变量用户名,但这给了我验证错误,我只是想不出解决它的方法。
有任何想法吗?有没有人做过类似的事情?
您可以修改 spring security 使用的默认 User 字段
在您的Config.groovy 中添加以下内容
grails.plugins.springsecurity.userLookup.usernamePropertyName = 'XXX'
其中 XXX 是要使用的用户实体的字段
您可以在此处检查配置属性
我最近通过将视图和控制器从 spring 安全插件复制到我的 grails-app 并更新视图以将 emailAddress 显示为与用户名相反来完成此操作。我还在用户域类中用 emailAddress 替换了 username 属性。确保按如下方式更新约束:
static constraints = {
emailAddress email: true, blank: false, unique: true
password blank: false, password: true
}
dimcookies的建议是正确的并且适用于旧版本的 Grails,新的语法配置,至少对于 Grails 2.3.1,是:
grails.plugin.springsecurity.userLookup.usernamePropertyName = 'emailAddress'