用户体验问题:用户管理模块中的密码更改
我们正在编写一个用户管理模块,管理员可以在其中更改其他用户的密码。 我们将用户的哈希密码存储在数据库中。
问题是我们向管理员用户呈现什么字段?
有一些选项:
不显示任何值的输入字段,仅在输入某个值时才更改密码
用固定长度的字符串呈现输入字段,并在值变化时检测变化
有一个呈现变化的选项密码按钮,但我们不想这样做 方式。
您使用什么选项以及为什么?
We are writing a user management module where the admin can change passwords for other users.
We store hashed passwords of users in DB.
The question is what field do we present to the admin user ?
There are some options:
Present the input filed with no value, and change the password only if the some value was entered
Present the input field with fixed-length string, and detect the change when the value changes
There's an option of presenting a change password button, but we prefer not to do it this way.
What option do you use and why ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我会选择选项 1。
这是因为它实际上不是“更改密码”选项,它实际上是“设置密码”选项。向管理员用户显示当前哈希值没有任何价值。
因此,在更新用户代码中,您只需检查密码字段是否已设置,如果设置了,则散列新值并存储新散列。
注意:这与传统上用户(包括管理员)更改自己密码的方式不同。
在这种情况下,通常会提示用户输入旧密码的值,以确保用户在登录后不会出现其他人出现在屏幕上的情况。但是,如果您想重新使用同一屏幕(使用不同的 where 子句)那么这并不是必需的——只是通常所做的事情。
I would go with option 1.
This is because its not really a "change password" option, its really a "set password" option. There is no value in showing the current hash to the admin user.
So in your update user code you just check if the password field is set, if so hash the new value and store the new hash.
Note: this is traditionally different to the way a user (including admin) changes their own password.
In that case the user is usually prompted for the value of the old password to ensure that its not someone else coming across the screen when its already logged in. But if you wanted to re-use the same screen (with a different where clause) then this is not essential - just what's normally done.
经过几分钟的集思广益,我们找到了合并选项,即在文本框中显示固定大小的值,并使用 onfocus() 和 onblur() 事件将焦点上的字段清空,并在松散的情况下返回到固定大小的字符串未输入文本时获得焦点。
After a few minutes of brainstorming we got to the merged option, of showing fixed-size value inside the text-box and use onfocus() and onblur() events to blank the field on focus and return to the fixed size string on loose of focus when no text was entered.