如果项目开发运行的环境依赖于谷歌的,那么经常出现会自动记录曾经登陆的账户和密码,当然这很方便,但是有一个小bug,直接选择曾经用的密码就可以直接登录,具有一定的安全性问题。
一、问题特征
1、自动记录登录密码和账户
2、input框出现黄色背景
二、问题根本原因
1、根据input框的type类型为password记住密码,同时密码上方的登录账户也会记住
2、此input框如果包含了name和id属性也会记住密码
三、解决之策(记住最后一次登录的账号,但不记住密码的方法)(亲测)
1、type仍为password值,但密码input框不得包含name和id属性
2、并且必须加入autocomplete="new-password"属性
详情:登录时用localstorage.setItem('username','')记住登录的用户名,下一次登录时将localstorage.getItem('username')的值赋给当前的用户名input框。
代码块:
html:
<div class="login-account"><input type="text" class="username" value="" placeholder="请输入账号"></div>
<div class="login-pwd">input type="password" value="" placeholder="请输入密码" autocomplete="new-password" ></div>
<button onclick="signIn()">登录</button>
js:(加载页面时进入如下判断)
if( localStorage.getItem(' username ')){
document.getElementsByClassName(' username ')[0].value=localStorage.getItem(' username ');
}
signIn(){/*正常接入登录接口即可*/}
总结:
1、只记录账号不记录密码。
(1)localstorage记录上一次登录的账号,密码框name和id属性都不用,并且使用autocomplete="new-password"
(2)理论上也可用localstorage来存储用户名的cookie值(document.cookie获取cookie值,然后截取所需要的用户名的值),删除密码框的cookie值(未亲测,*-* *-*)
2、记录曾经登录过的用户名
每次登录时记录用户名并塞进一个数组中,用户名input框获取焦点时显示下拉框(曾经登录过的用户名数组)(未亲测 *-* *-*)










网友评论