在前端登录的时候,一般都有登录的按钮,点击一下就可以进行登录操作,但是为了增强用户体验感,其实如果按了回车键就可以登录,这样的话登录起来会更加的方便。
实现
在基础的登录步骤完成之后添加回车键登录效果,回车键登录就两个步骤:
- 在vue的mounted钩子中,添加按键监听事件
- 然后定义事件处理函数即可。
mounted () {
// 绑定事件
window.addEventListener('keydown', this.keyDown)
},
methods: {
// 点击重置按钮,重置登录表单
resetLoginForm () {
// console.log(this);
this.$refs.loginFormRef.resetFields()
},
// 表单的预验证
login () {
const encryptor = new JSEncrypt() // 新建JSEncrypt对象
this.$refs.loginFormRef.validate(async (valid) => {
// console.log(valid)
if (!valid) return
encryptor.setPublicKey(publicKey) // 设置公钥
const rsaPassWord = encryptor.encrypt(this.loginForm.password) // 对需要加密的数据进行加密
this.loginForm.password = rsaPassWord
const { data: res } = await this.$http.post('login', this.loginForm)
if (res.meta.status !== 200) return this.$message.error('登录失败')
this.$message.success('登录成功!')
// 1. 将登陆成功之后的 token,保存到客户端的 sessionStorage中
// 1.1 项目中除了登录之外的其他API接口,必须在登录之后才能访问
// 1.2 token 只应在当前网站打开期间生效,所以将 token 保存到 sessionStorage中
// 1.3 localStorage 是持久化的存储机制,sessionStorage是会话期间的存储机制
window.sessionStorage.setItem('token', res.data.token)
// 2. 通过编程式导航跳转到后台主页,路由地址是 /home
this.$router.push('/home')
})
},
keyDown (e) {
// 判断按下是否是回车键
if (e.keyCode === 13) {
// 判断用户名密码是否为空
if (this.loginForm.password === '' || this.loginForm.username === '') { // 如果二者其一为空则不执行任何操作
return false
} else { // 如果两个都不为空则执行登录操作
// 登录方法
this.login()
}
}
}
}