1

我有一个表格用于在删除用​​户之前检查登录名和密码。这个:

<table>
        <g:form action="deleteUser">
            <tr>
                <td><label for="username">Login: </label></td>
                <td><g:textField name="username"/>
            </tr>
            <tr>
                <td><label for="password">Password: </label></td>
                <td><g:passwordField name="password"/></td>
            </tr>
            <tr>
                <td colspan="2"><g:submitButton name="delete" value="Delete"/></td>
            </tr>
        </g:form>
    </table>

如果 sha512hash 中的密码(用户通过 shiro 插件注册),我如何为此做逻辑。我如何使用来自 db 的哈希码从密码表单中将密码作为字符串检查?我可以使用 DbRealm 类中的身份验证方法吗,如果是,那么如何?

PS对不起我的英语!

4

1 回答 1

1

如果我确实以正确的方式理解了您的问题,那么您只想在删除用户之前最后一次验证用户密码。

在数据库中,只存储密码的哈希值。但是您可以将新密码的哈希值与存储密码的哈希值进行比较:

def dbhash = ShiroUser.findByUsername(params.username)?.passwordHash
if (new Sha256Hash("password").toHex()==dbhash) {
  //delete user
} else {
  //display error message
}

希望有帮助!

于 2012-07-04T16:44:10.333 回答