在政府医疗机构工作的乐趣之一是必须处理所有围绕PHI(受保护的健康信息)的偏执。不要误解我的意思,我支持尽一切可能保护人们的个人信息(健康状况、财务状况、上网习惯等),但有时人们会有点太神经质了。
举个例子:我们的一位州客户最近发现浏览器提供了保存密码的方便功能。我们都知道它已经存在了一段时间,完全是可选的,由最终用户决定是否使用它是一个明智的决定。然而,目前有一点骚动,我们被要求找到一种方法来禁用我们网站的功能。
问:网站有没有办法告诉浏览器不要提供记住密码的功能?我从事网络开发已经很长时间了,但我不知道我以前遇到过这种情况。
任何帮助都是感激的。
我在这个问题上苦苦挣扎了一段时间,并有了一个独特的解决方法。特权用户不能让保存的密码为他们工作,但普通用户需要它。这意味着特权用户必须登录两次,第二次强制不保存密码。
有了这个要求,标准的autocomplete="off"方法并不适用于所有浏览器,因为密码可能是从第一次登录时保存的。一位同事找到了一种解决方案,在关注新密码字段时替换密码字段,然后关注新密码字段(然后连接相同的事件处理程序)。这是有效的(除了它在IE6中造成了一个无限循环)。也许有办法,但这让我头疼。
最后,我尝试将用户名和密码放在表单之外。令我惊讶的是,这竟然起作用了!它可以在IE6上运行,也可以在Linux上运行当前版本的Firefox和Chrome。我还没有进一步测试它,但我怀疑它在大多数(如果不是所有)浏览器中都能运行(但如果有一种浏览器不关心是否没有表单,我也不会感到惊讶)。
下面是一些示例代码,以及一些jQuery来让它工作:
<input type="text" id="username" name="username"/>
<input type="password" id="password" name="password"/>
<form id="theForm" action="/your/login" method="post">
<input type="hidden" id="hiddenUsername" name="username"/>
<input type="hidden" id="hiddenPassword" name="password"/>
<input type="submit" value="Login"/>
</form>
<script type="text/javascript" language="JavaScript">
$("#theForm").submit(function() {
$("#hiddenUsername").val($("#username").val());
$("#hiddenPassword").val($("#password").val());
});
$("#username,#password").keypress(function(e) {
if (e.which == 13) {
$("#theForm").submit();
}
});
</script>
我已经测试了在所有主要的浏览器中添加autocomplete="off"的表单标签。事实上,到目前为止,美国大多数人都在使用IE8。
IE8, IE9, IE10, Firefox, Safari都可以。
浏览器没有提示“保存密码”。
另外,以前保存的用户名和密码没有填充。
Chrome & ie11不支持自动完成="off"功能
FF支持autocomplete="off"。但有时已经存了
填充凭证。
2014年6月11日更新
最后,下面是一个使用javascript的跨浏览器解决方案,它可以在所有浏览器中正常工作。
需要删除登录表单中的“表单”标签。在客户端验证之后,将凭据放入隐藏表单并提交。
另外,添加两个方法。一个用于验证“validateLogin()”,另一个用于在文本框/密码/按钮“checkAndSubmit()”中单击回车时监听进入事件。因为现在登录表单没有表单标签,所以输入事件在这里不起作用。
HTML
<form id="HiddenLoginForm" action="" method="post">
<input type="hidden" name="username" id="hidden_username" />
<input type="hidden" name="password" id="hidden_password" />
</form>
Username: <input type="text" name="username" id="username" onKeyPress="return checkAndSubmit(event);" />
Password: <input type="text" name="password" id="password" onKeyPress="return checkAndSubmit(event);" />
<input type="button" value="submit" onClick="return validateAndLogin();" onKeyPress="return checkAndSubmit(event);" />
Javascript
//For validation- you can modify as you like
function validateAndLogin(){
var username = document.getElementById("username");
var password = document.getElementById("password");
if(username && username.value == ''){
alert("Please enter username!");
return false;
}
if(password && password.value == ''){
alert("Please enter password!");
return false;
}
document.getElementById("hidden_username").value = username.value;
document.getElementById("hidden_password").value = password.value;
document.getElementById("HiddenLoginForm").submit();
}
//For enter event
function checkAndSubmit(e) {
if (e.keyCode == 13) {
validateAndLogin();
}
}
祝你好运! !