0

我正在围绕 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 添加一个字段,然后在使用编码密码保存域类之前在控制器中验证它?

4

1 回答 1

0

最好的方法是使用命令对象,请参阅: 官方文档

于 2013-01-10T15:06:01.653 回答