摘要:本文介绍了为Tlias智能学习辅助系统添加登录认证功能的过程,涵盖从需求分析、接口文档设计,到思路分析、功能开发以及最后的测试等多个关键环节,旨在实现只有通过登录认证的用户才能安全访问后台系统功能的目标。
关键词 :登录认证;JWT令牌;用户验证
参考资料:黑马程序员day12 完整项目请从第10天开始看
一、引言
在完成部门管理和员工管理的基本功能后,系统存在安全隐患,即未登录状态下可直接访问后台。为解决这一问题,引入登录认证功能,确保用户必须登录后才能访问后台系统功能。
二、登录功能
2.1 需求
用户在登录界面输入用户名和密码,点击"登录"按钮后,系统向服务器发送请求。服务器需判断用户输入的用户名和密码是否正确,若正确则返回成功结果,前端页面跳转至系统首页面。
2.2 接口文档
参照以下接口文档进行登录功能开发:
- 基本信息 :
- 请求路径:/login
- 请求方式:POST
- 接口描述:该接口用于员工登录Tlias智能学习辅助系统,登录成功后,系统下发JWT令牌。
- 请求参数 :
- 参数格式:application/json
- 参数说明:
| 名称 | 类型 | 是否必须 | 备注 |
|---|---|---|---|
| username | string | 必须 | 用户名 |
| password | string | 必须 | 密码 |
请求数据样例:
json
{
"username": "jinyong",
"password": "123456"
}
- 响应数据 :
- 参数格式:application/json
- 参数说明:
| 名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
|---|---|---|---|---|---|
| code | number | 必须 | 响应码, 1 成功 ; 0 失败 | ||
| msg | string | 非必须 | 提示信息 | ||
| data | string | 必须 | 返回的数据, jwt令牌 |
响应数据样例:
json
{
"code": 1,
"msg": "success",
"data": "eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoi6YeR5bq4IiwiaWQiOjEsInVzZXJuYW1lIjoiamlueW9uZyIsImV4cCI6MTY2MjIwNzA0OH0.KkUc_CXJZJ8Dd063eImx4H9Ojfrr6XMJ-yVzaWCVZCo"
}
2.3 思路分析
登录服务端的核心逻辑为接收前端请求传递的用户名和密码,依据此在数据库中查询用户信息。若能查询到用户信息,表明用户输入的用户名和密码正确;若未查询到,则说明输入有误。
2.4 功能开发
- LoginController:
java
@RestController
public class LoginController {
@Autowired
private EmpService empService;
@PostMapping("/login")
public Result login(@RequestBody Emp emp){
Emp e = empService.login(emp);
return e != null? Result.success():Result.error("用户名或密码错误");
}
}
- EmpService:
java
public interface EmpService {
/**
* 用户登录
* @param emp
* @return
*/
public Emp login(Emp emp);
//省略其他代码...
}
- EmpServiceImpl:
java
@Slf4j
@Service
public class EmpServiceImpl implements EmpService {
@Autowired
private EmpMapper empMapper;
@Override
public Emp login(Emp emp) {
//调用dao层功能:登录
Emp loginEmp = empMapper.getByUsernameAndPassword(emp);
//返回查询结果给Controller
return loginEmp;
}
//省略其他代码...
}
- EmpMapper:
java
@Mapper
public interface EmpMapper {
@Select("select id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time " +
"from emp " +
"where username=#{username} and password =#{password}")
public Emp getByUsernameAndPassword(Emp emp);
//省略其他代码...
}
2.5 测试
- 功能开发完成后 :启动服务,利用Postman进行测试。发起POST请求,访问
http://localhost:8080/login。若Postman测试通过,表明后端登录功能基本正常。 - 前后端联调测试:退出系统,进入登录页面。在登录页面输入账户密码,若登录成功后能进入后台管理系统页面,则说明前后端联调成功,登录功能整体可用。