你提到的另一种实现方式也是可以的,通过直接调用`employeeService.findByUserName`方法,再从数据库中获取相应数据并封装成`Employee`对象来进行验证。这种方式也是有效的,并且可以更简洁明了。以下是使用你提到的方式来实现登录的代码示例:
@PostMapping
public R login(HttpServletRequest request, @RequestBody Employee employee){
Employee emp = employeeService.findByUserName(employee.getUsername());
if(emp == null) {
return R.error("用户不存在");
}
String password = employee.getPassword();
String encryptedPassword = DigestUtils.md5DigestAsHex(password.getBytes());
if(!emp.getPassword().equals(encryptedPassword)) {
return R.error("密码错误");
}
if(emp.getStatus()==0) {
return R.error("账号已禁用");
}
request.getSession().setAttribute("employee", emp.getId());
return R.success(emp);
}
两种方式都可以实现用户登录功能,选择哪种方式取决于你的项目需求和个人偏好。前面解释的方式使用了MyBatis Plus的查询条件包装器,可以在查询时更加灵活地添加条件,同时也展示了如何处理加密的密码比对,以及使用`@RequestBody`注解将请求体中的JSON数据映射为`Employee`对象。而你提到的方式则更加简洁明了,直接调用服务层方法获取数据库中的数据进行比对。
总之,选择哪种方式取决于具体的业务需求和开发团队的技术栈偏好。希望这样能够帮助你更好地理解和选择适合自己的方式。如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |