Skip to content

登录功能实现


思路分析

怎么样才算登录成功了呢?

用户名和密码都输入正确,登录成功

否则,登录失败

登录功能的本质是什么?

查询

根据用户名和密码查询员工信息

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这个路径就可以进入后台管理系统,这是不安全的