登录功能实现
思路分析
怎么样才算登录成功了呢?
用户名和密码都输入正确,登录成功
否则,登录失败
登录功能的本质是什么?
查询
根据用户名和密码查询员工信息
LoginInfo
准备实体类 LoginInfo, 封装登录成功后, 返回给前端的数据
java
/**
* 登录成功结果封装类
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LoginInfo {
private Integer id; //员工ID
private String username; //用户名
private String name; //姓名
private String token; //令牌
}LoginController
java
@Slf4j
@RestController
public class LoginController {
@Autowired
private EmpService empService;
@PostMapping("/login")
public Result login(@RequestBody Emp emp){
log.info("员工来登录啦 , {}", emp);
LoginInfo loginInfo = empService.login(emp);
if(loginInfo != null){
return Result.success(loginInfo);
}
return Result.error("用户名或密码错误~");
}
}EmpService
EmpService 接口中增加 login 登录方法
java
/**
* 登录
*/
LoginInfo login(Emp emp);EmpServiceImpl
EmpServiceImpl 实现 login 方法
java
@Override
public LoginInfo login(Emp emp) {
Emp empLogin = empMapper.getUsernameAndPassword(emp);
if(empLogin != null){
LoginInfo loginInfo = new LoginInfo(empLogin.getId(), empLogin.getUsername(), empLogin.getName(), null);
return loginInfo;
}
return null;
}EmpMapper
EmpMapper 增加接口方法
java
/**
* 根据用户名和密码查询员工信息
*/
@Select("select * from emp where username = #{username} and password = #{password}")
Emp getUsernameAndPassword(Emp emp);问题分析
登录的原理是根据用户名和密码查询员工信息,如果匹配则登录成功,但是直接访问
http://localhost:90/index这个路径就可以进入后台管理系统,这是不安全的
