我正在围绕 springsource-security-core 插件实现用户控制器。
当我在控制器(“用户”)中“显示”一个用户实例时,我想确保密码参数为空并显示为空白编辑控件。
这是“show”方法的代码:
@Secured(['ROLE_SUPERUSER','ROLE_USER'])
def show(Long id) {
/**
* If we're not the Superuser, then we only want to see the instance of the logged in user.
*/
def userInstance
if (SpringSecurityUtils.ifNotGranted('ROLE_SUPERUSER')) {
userInstance=springSecurityService.currentUser
} else {
userInstance = User.get(id)
}
if (!userInstance) {
flash.message = message(code: 'default.not.found.message', args: [message(code: 'user.label', default: 'User'), id])
redirect(action: "list")
return
}
userInstance.setPassword(null)
[userInstance: userInstance]
}
在 'userInstance' 上设置“watch”表示 userInstance.setPassword(null) 具有预期的效果,并将“password”参数设置为 'null'。
但是,当使用相同的参数集呈现视图时,会填充密码。
我也在寻找实现“密码确认”字段。我对 groovy/grail 有点陌生,所以我一步一步地摸索着。看来,通过传入“userInstance”,我传递了“User”域类的一个实例。
我是否需要域类中的两个编码字段,或者我可以在运行中向 GSP 添加一个字段,然后在使用编码密码保存域类之前在控制器中验证它?