我使用grails acl安全性。我想以管理员身份登录后更改或编辑用户密码。但是,当我进入编辑模式时,密码字段将显示之前在用户表中保存为加密字符串的加密文本。有什么方法可以解密从数据库中获取的字符串并以原始字符串形式显示在密码字段中?
我在grails acl中没有得到任何直接的解决方案来做到这一点。
任何帮助,将不胜感激。
最佳答案
显示明文密码的理由不是很好。作为用户或管理员,如果要更改密码,则可以像其他任何属性一样进行操作。显示旧值(由于是密码,请显示为*字符;如果您是管理员,则显示为哈希值),然后可以输入新密码。当您更新时,它将被散列并存储。
只要明文密码满足验证要求(最小长度,特殊字符等),那么更新就可以正常进行。
请注意,密码通常不加密(意味着可以解密),而是经过哈希处理。哈希算法是有损的-给定任何输入,哈希通常是固定长度的输出,因此哈希不能包含所有原始数据,也不能用于检索原始值。对于密码,这很好。为了进行身份验证,您无需对哈希值进行散列,而是将其与登录页面中的明文值进行比较-对哈希登录页面值并与存储的哈希值进行比较。对于某些算法,它们将是相同的,而对于其他算法(例如bcrypt),它们将是不同的但等效的,并且该算法将有一种方法来检查它们是否等效。
关于grails - 在grals acl中更改/编辑密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19517732/