用户在进行登录时,常常会在登录页面看到记住密码功能。一般是利用sessionStorage进行储存,这样做也是为了用户方便。
HTML代码:
<div class="login">
<el-form :model="loginForm" status-icon :rules="rules" ref="loginForm" label-width="100px" class="demo-loginForm">
<h1 class="title">
<i class="el-icon-s-promotion"></i>
管理系统
</h1>
<el-form-item label="账号" prop="userId">
<el-input type="text" v-model="loginForm.userId" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="密码" prop="passWord">
<el-input type="password" v-model="loginForm.passWord" autocomplete="off"></el-input>
</el-form-item>
<el-form-item prop="rememberPwd">
<div style="float:left;">
<el-checkbox v-model="loginForm.remember" />
记住密码
</div>
</el-form-item>
<el-form-item class="box">
<el-button type="primary" @click="submitForm('loginForm')">登录</el-button>
<el-button @click="resetForm('loginForm')">重置</el-button>
</el-form-item>
</el-form>
</div>
组件化开发,使用elementUI来开发页面,容易上手,效果也能达到。
JS代码:
return {
loginForm: {
remember:false
},
created() {
let account = sessionStorage.getItem("userId")
let password = sessionStorage.getItem("passWord")
// 如果存在赋值给表单,并且将记住密码勾选
if(account){
this.loginForm.userId = account
this.loginForm.passWord = password
this.loginForm.remember = true
}
},
methods:{
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
let _this=this;
this.axios.post('/api/checklogin',{
userId:_this.loginForm.userId,
passWord:_this.loginForm.passWord
}).then(response=>{
if(response.data.length){
if(this.loginForm.remember==true) {
sessionStorage.setItem("userId", this.loginForm.userId);
sessionStorage.setItem("passWord", this.loginForm.passWord);
}
_this.$store.commit('SAVE_USERINFO',response.data)//存储
this.$message({
message: '恭喜你,登录成功',
type: 'success'
});
//页面跳转
this.$router.push("/Home");
}
else{
this.$message.error('请检查用户名或密码');
}
})
} else {
return false;
}
});
}
}
HTML5的WebStorage提供了两种API:localStorage(本地存储)和sessionStorage(会话存储),不同浏览器无法共享localStorage或sessionStorage中的信息。相同浏览器的不同页面间可以共享相同的 localStorage(页面属于相同域名和端口),但是不同页面或标签页间无法共享sessionStorage的信息。这里需要注意的是,页面及标签页仅指顶级窗口,如果一个标签页包含多个iframe标签且他们属于同源页面,那么他们之间是可以共享sessionStorage的。我这里是用sessionStorage进行功能测试,具体怎么用根据功能要求来。
CSS代码:
.login{
background-color: aqua;
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
.el-form{
width: 400px;
border: 1px solid #ccc;
border-radius: 4px;
padding: 50px 45px ;
}
.el-form,.title{
font-size: 20px;
font-weight: bold;
text-align: center;
padding-bottom: 20px;
}
.el-form,.box{
padding-right:55px;
}
具体效果:
当你重新打开网页登录时,就会发现已经记住密码了。