7.根据用户名和密码查询用户

7.1.接口说明

功能说明

查询功能,根据参数中的用户名和密码查询指定用户

接口路径

GET /query

参数说明:

form表单格式

参数 说明 是否必须 数据类型 默认值
username 用户名,格式为4~30位字母、数字、下划线 String
password 用户密码,格式为4~30位字母、数字、下划线 String

返回结果:

用户的json格式数据

{
    "id": 6572312,
    "username":"test",
    "phone":"13688886666",
    "created": 1342432424
}

状态码:

  • 200:注册成功
  • 400:用户名或密码错误
  • 500:服务器内部异常,注册失败

7.2.controller

/**
 * 根据用户名和密码查询用户
 * @param username
 * @param password
 * @return
 */
@GetMapping("query")
public ResponseEntity<User> queryUser(
    @RequestParam("username") String username,
    @RequestParam("password") String password
    ) {
        User user = this.userService.queryUser(username, password);
        if (user == null) {
            return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
        }
        return ResponseEntity.ok(user);
    }

7.3.service

public User queryUser(String username, String password) {
    // 查询
    User record = new User();
    record.setUsername(username);
    User user = this.userMapper.selectOne(record);
    // 校验用户名
    if (user == null) {
        return null;
    }
    // 校验密码
    if (!user.getPassword().equals(CodecUtils.md5Hex(password, user.getSalt()))) {
        return null;
    }
    // 用户名密码都正确
    return user;
}

要注意,查询时也要对密码进行加密后判断是否一致。

7.4.测试

我们通过RestClient测试:

商城项目-根据用户名和密码查询用户_用户名

8.在注册页进行测试

在注册页填写信息:

商城项目-根据用户名和密码查询用户_下划线_02

提交发现页面自动跳转到了登录页,查看数据库:

商城项目-根据用户名和密码查询用户_数据_03