我遇到了spring security ui插件的问题。我正在尝试向我的SecUser类添加电子邮件字段(存储有关用户的信息)。但是,使用s2ui-override生成的Spring Security Management Console中没有字段“email”。另一方面,由于文档,这是可用的(link):
默认情况下,只有标准字段(username,enabled,accountExpired,accountLocked和passwordExpired)可用,但可以使用grails s2ui-override脚本进行自定义 - 请参阅有关配置的部分。
我尝试使用s2ui覆盖脚本但没有效果。
我认为这是一个简单的想法,但几个小时后我自己找不到解决方案。所以,如果有人知道如何做到这一点 - 请告诉我;)
在和我的用户类:
class SecUser {
transient springSecurityService
String username
String password
String email
boolean enabled
boolean accountExpired
boolean accountLocked
boolean passwordExpired
static constraints = {
username blank: false, unique: true
password blank: false
email blank: false, email:true
}
static mapping = {
password column: '`password`'
}
Set<SecRole> getAuthorities() {
SecUserSecRole.findAllBySecUser(this).collect { it.secRole } as Set
}
def beforeInsert() {
encodePassword()
}
def beforeUpdate() {
if (isDirty('password')) {
encodePassword()
}
}
protected void encodePassword() {
password = springSecurityService.encodePassword(password)
}
@Override
public String toString(){
return "User - "+username;
}
}
答案 0 :(得分:0)
您可以在user/edit视图中观看源代码:
<table>
<tbody>
<s2ui:textFieldRow name='username' labelCode='user.username.label' bean="${user}"
labelCodeDefault='Username' value="${user?.username}"/>
<s2ui:passwordFieldRow name='password' labelCode='user.password.label' bean="${user}"
labelCodeDefault='Password' value="${user?.password}"/>
<s2ui:checkboxRow name='enabled' labelCode='user.enabled.label' bean="${user}"
labelCodeDefault='Enabled' value="${user?.enabled}"/>
<s2ui:checkboxRow name='accountExpired' labelCode='user.accountExpired.label' bean="${user}"
labelCodeDefault='Account Expired' value="${user?.accountExpired}"/>
<s2ui:checkboxRow name='accountLocked' labelCode='user.accountLocked.label' bean="${user}"
labelCodeDefault='Account Locked' value="${user?.accountLocked}"/>
<s2ui:checkboxRow name='passwordExpired' labelCode='user.passwordExpired.label' bean="${user}"
labelCodeDefault='Password Expired' value="${user?.passwordExpired}"/>
</tbody>
</table>
没有电子邮件字段。你应该将edit.gsp和create.gsp文件从source复制到grails-app / views / user /,并在 username 字段之后编辑它贴上这段代码:
<s2ui:textFieldRow name='email' labelCode='user.email.label' bean="${user}"
labelCodeDefault='email' value="${user?.email}"/>
您必须在grails-app / i18n / path中创建 spring-security-core-local.properties 并编写新属性
user.email.label=Email
当然,您应该在正确的域类中创建属性 email 。