3.2 전자상거래 백그라운드 관리 시스템 보완 --- 키 로그인 기능 입력

프론트엔드에서 로그인할 때 보통 로그인 버튼이 있고, 클릭 한 번으로 로그인이 가능하지만, 사용자 경험을 향상시키기 위해 Enter 키를 눌러도 로그인이 가능하기 때문에 더 많은 로그인이 편리합니다.

성취하다

기본 로그인 단계가 완료되면 Enter 키 로그인 효과가 추가되고 Enter 키 로그인은 두 단계입니다.

  1. vue의 마운트된 후크에서 버튼 리스너 이벤트 추가
  2. 그런 다음 이벤트 핸들러 함수를 정의합니다.

여기에 이미지 설명 삽입

 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()
        }
      }
    }
  }

추천

출처blog.csdn.net/weixin_47505105/article/details/123623192