在处理任何登录表单后,是否有可能防止浏览器提供记住密码的选项?
我知道这个问题已经在这里被问答过,但是迄今为止没有一个答案起作用,甚至其中一个建议使用:
autocomplete="off"
但是那也没有起作用。
我正在使用AngularJS和Jade作为模板引擎(不确定是否相关),有没有什么方法可以做到这一点?
在处理任何登录表单后,是否有可能防止浏览器提供记住密码的选项?
我知道这个问题已经在这里被问答过,但是迄今为止没有一个答案起作用,甚至其中一个建议使用:
autocomplete="off"
但是那也没有起作用。
我正在使用AngularJS和Jade作为模板引擎(不确定是否相关),有没有什么方法可以做到这一点?
<script>
var number = Math.random();
var login_name = 'name_'+number;
var pass_word = 'pass_'+number;
</script>
<input name='number' value="number" type='hidden'>
<input name="login_name" type='text'>
<input name="pass_word" type='password'>
您的服务器读取“number”字段,然后使用该字段读取“name_”number值和“pass_”number值。
无论用户是否在浏览器中保存密码,每次用户登录时,名称和密码字段都将不同。
Color this password field to the same color as the background of your input so the 'password dots' is essentially invisible on page load.
onload
, onblur
, after a timeout, or however you want to do it, use JQuery or JS to set the value of that password field to nothing (blank), then set the color of the field to whatever it is supposed to be.
$("#old_password").val('').css('color','black);
Login: <input ng-model="login" type="text" />
Password: <input ng-model="password" type="password" autocomplete="off" />
$scope.doLogin = function() {
var dataObj = {
login: $scope.login,
password: $scope.password
};
var res = $http.post('/login', dataObj);
}
在IE10和Chrome 54中测试过
<!-- Do not set "id" and "name" attributes -->
Login: <input type="text">
Password: <input type="password">
<!-- Handle submit action -->
<input type="submit" onclick="login(this)">
function login(submitButton) {
var form = submitButton.form;
// fill input names by code before submitting
var inputs = $(form).find('input');
$(inputs[0]).attr('name', 'userName');
$(inputs[1]).attr('name', 'password');
form.submit();
}
希望这能有所帮助。仅在Chrome 56上进行了测试。
我发现Firefox 52.0.2非常坚定地记住自动完成值。我尝试了几乎所有上面建议的方法,包括将名称属性更改为随机值。唯一对我有用的是在浏览器处理表单后使用Javascript将值设置为“”。
我的用例很幸运,因为我不必采取CSS技巧来防止自动完成表单值的混乱和/或恼人的闪烁(如@MinnesotaSlim所提出的),因为我的表单在隐藏状态下,直到他们点击按钮;然后通过Bootstrap模态框显示。因此(使用jQuery),
$('#my-button').on("click",function(){
$('#form-login input').val("");
});
// this also works nicely
$('#my-modal').on("show.bs.modal",function(){
$('#form-login input').val("");
})
我想你可以通过最初隐藏表单,在文档加载事件中手动覆盖浏览器并显示表单来获得相同的效果。
<form>
<input id="UserName" name="UserName" type="hidden" value="">
<input id="Password" name="Password" type="hidden" value="">
</form>
<input id="boxUsr" name="boxUsr" type="text" value="" autocomplete="off">
<input id="boxPsw" name="boxPsw" type="password" autocomplete="off">
<input type="submit" value="Login" onclick="javascript:submitformforlogin()">
function submitformforlogin() {
$("[name='boxPsw'],[name='boxUsr']").attr('readonly','true');
var psw = document.getElementsByName('boxPsw')[0];
var usr = document.getElementsByName('boxUsr')[0];
if (psw.value != "false") {
$('#Password').val(psw.value);
$('#UserName').val(usr.value);
psw.value = "";
usr.value = "";
$("form").submit();
} else
window.alert("Error!");
}
password
或email
,而是pss
和usrnme
。 - DJG22