Java登录Vue记住密码实现

在前后端分离的开发中,Java作为后端语言,Vue作为前端框架,是一种常见的组合。在用户登录功能中,一般会有记住密码的需求,即用户在下次登录时可以选择是否自动填充用户名和密码。本文将介绍如何在Java后端和Vue前端中实现登录记住密码的功能。

前端Vue代码实现

首先,我们需要在前端的登录页面中添加一个"记住密码"的复选框,让用户可以选择是否记住密码。示例代码如下:

<template>
  <div>
    <label for="username">用户名:</label>
    <input type="text" id="username" v-model="username">
    <br>
    <label for="password">密码:</label>
    <input type="password" id="password" v-model="password">
    <br>
    <input type="checkbox" id="remember" v-model="remember">
    <label for="remember">记住密码</label>
    <br>
    <button @click="login">登录</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      password: '',
      remember: false
    }
  },
  methods: {
    login() {
      // 发送登录请求
      // 省略登录请求的代码
      if (this.remember) {
        // 将用户名和密码保存到本地存储
        localStorage.setItem('username', this.username);
        localStorage.setItem('password', this.password);
      } else {
        // 清除本地存储的用户名和密码
        localStorage.removeItem('username');
        localStorage.removeItem('password');
      }
    }
  }
}
</script>

上述代码中,我们使用了Vue的v-model指令来实现双向绑定,将输入的用户名和密码保存到usernamepassword变量中。当用户点击登录按钮时,会触发login方法,如果用户选择了记住密码,则将用户名和密码保存到本地存储中,否则清除本地存储中的用户名和密码。

后端Java代码实现

在后端的Java代码中,我们需要根据前端传递过来的用户名和密码来进行登录验证。如果用户选择了记住密码,我们需要生成一个记住密码的Token,并将Token保存到数据库中。示例代码如下:

@RestController
public class LoginController {
  
  @PostMapping("/login")
  public String login(@RequestBody Map<String, String> request) {
    String username = request.get("username");
    String password = request.get("password");
    boolean remember = Boolean.parseBoolean(request.get("remember"));
    
    // 省略登录验证的代码
    if (remember) {
      // 生成记住密码的Token
      String rememberToken = generateRememberToken(username);
      // 将Token保存到数据库中
      saveRememberToken(username, rememberToken);
      return rememberToken;
    } else {
      return "登录成功";
    }
  }
  
  private String generateRememberToken(String username) {
    // 生成记住密码的Token的逻辑
    // 省略具体实现
    return token;
  }
  
  private void saveRememberToken(String username, String rememberToken) {
    // 将Token保存到数据库中的逻辑
    // 省略具体实现
  }
}

上述代码中,我们使用了Spring Boot的注解@RestController来标识该类是一个控制器。在登录接口中,我们通过@PostMapping注解来指定请求的方法为POST,并使用@RequestBody注解来接收前端传递过来的用户名和密码。根据用户选择的记住密码的状态,我们生成一个记住密码的Token,并将Token保存到数据库中。

序列图

下面是登录记住密码的功能实现的序列图:

sequenceDiagram
  participant Frontend as 前端
  participant Backend as 后端
  Frontend ->> Backend: 发送登录请求
  Backend -->> Frontend: 返回登录结果
  Frontend ->> Frontend: 判断是否记住密码
  Frontend ->> Frontend: 保存/清除本地存储的用户名和密码
  Note right of Backend: 如果记住密码\n生成记住密码的Token\n保存到数据库中

上述序列图展示了前端发送登录请求给后端,后端进行登录验证,并返回登录结果