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