本节实现基础的登录认证功能,只进行数据库的判断。这种方法有一个巨大的问题是用户如果访问系统的其他功能,系统不会识别出用户是未登录的,即界面并不会自动跳转到登录界面
接口文档
我们参照接口文档来开发登录功能
基本信息
请求路径:/login 请求方式:POST 接口描述:该接口用于员工登录Tlias智能学习辅助系统,登录完毕后,系统下发JWT令牌。
请求参数
参数格式:application/json
参数说明:
名称 类型 是否必须 备注 username string 必须 用户名 password string 必须 密码 请求数据样例:
{ "username": "jinyong", "password": "123456" }
响应数据
参数格式:application/json
参数说明:
名称 类型 是否必须 默认值 备注 其他信息 code number 必须 响应码, 1 成功 ; 0 失败 msg string 非必须 提示信息 data string 必须 返回的数据 , jwt令牌 响应数据样例:
{ "code": 1, "msg": "success", "data": "eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoi6YeR5bq4IiwiaWQiOjEsInVzZXJuYW1lIjoiamlueW9uZyIsImV4cCI6MTY2MjIwNzA0OH0.KkUc_CXJZJ8Dd063eImx4H9Ojfrr6XMJ-yVzaWCVZCo" }
实现思路
注意事项:
- 需要新定义一个LoginController
- post类型的请求,要用@RequestBody将客户端传送的Json数据封装到类中
- 客户端发送的Json数据包括username和password,所以可以使用Emp员工类封装
- 无需新定义Service和Mapper,因为本质还是查询员工的信息
实现代码
LoginController:
@Slf4j
@RestController
public class LoginController {
@Autowired
private EmpService empService;
@PostMapping("/login")
//注意用@RequestBody将Json数据映射到封装类中
public Result login(@RequestBody Emp emp){
log.info("登录注册");
//查询返回的是一条员工信息,即一个员工对象
Emp e = empService.login(emp);
return Result.success(e);
}
}
EmpServiceImpl:
@Override
public Emp login(Emp emp) {
Emp e = empMapper.getByUsernameAndPassword(emp);
return e;
}
EmpMapper:
/**
* 根据用户名和密码查询员工信息
* @param emp
* @return
*/
@Select("select * from emp where username = #{username} and password = #{password}")
Emp getByUsernameAndPassword(Emp emp);
Postman测试(Json格式)
需要选中raw