【代码解析】代码解析之登录(2)

 @PostMapping("/login")
    public R login(HttpServletRequest request, @RequestBody Employee employee){

        //将页面提交的密码password,进行md5加密处理
        String password = employee.getPassword();
        password = DigestUtils.md5DigestAsHex(password.getBytes());

        //根据用户提交的用户名username查询数据库
        LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Employee::getUsername,employee.getUsername());
        Employee emp= employeeService.getOne(queryWrapper);

        //如果没有查询到则返回登陆失败结果
        if (emp==null){
            return  R.error("登录失败");
        }

        //密码比对,如果不一致返回登录失败
        if (!emp.getPassword().equals(password)){
            return R.error("登录失败");
        }

        //查看员工状态,如果已失效,则返回员工已禁用结果
        if (emp.getStatus()==0){
            return R.error("账号已禁用");
        }

        //登录成功,将员工id存入session并返回登录成功结果
        request.getSession().setAttribute("employee",emp.getId());
        return R.success(emp);
    }

这是一段来自瑞吉外卖项目,内部员工登录方法的相关代码 

相关解析如下:

1.
    public R login(HttpServletRequest request, @RequestBody Employee employee){

这是一行名为 login 的代码,它接收两个参数:一个 HttpServletRequest 对象和一个表示员工的Employee 对象。其中,@RequestBody 注解表示employee 对象将从请求体中自动绑定。该方法的返回值是 R 类型。

2.
        String password = employee.getPassword();

从 employee 对象中获取提交的密码。

3.
        password = DigestUtils.md5DigestAsHex(password.getBytes());

使用md5算法对密码进行加密。

4.
        LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();

创建一个查询包装器,用于构建查询条件

5.
        queryWrapper.eq(Employee::getUsername,employee.getUsername());

设置查询条件,查找与提交的用户名相匹配的员工。

6.
        Employee emp= employeeService.getOne(queryWrapper);

根据查询条件,从数据库中获取一个员工对象

7. 
        if (emp==null){
            return  R.error("登录失败");
        }

如果没有查询到匹配的员工,则返回登陆失败的结果。

8.
        if (!emp.getPassword().equals(password)){
            return R.error("登录失败");
        }

如果密码不匹配,则返回登录失败的结果。

9.
        if (emp.getStatus()==0){
            return R.error("账号已禁用");
        }

如果员工的状态为禁用,则返回账号已禁用的结果。

10.
        request.getSession().setAttribute("employee",emp.getId());

如果登录成功,将员工的id 存入session中

11.
        return R.success(emp);
    }

返回登录成功的结果,包含员工对象

总结: 这段代码实现了员工用户的登录方法,它接收用户提交的用户名和密码,验证用户是否存在,密码是否匹配,以及账号是否禁用,如果一切正常则登录成功,否则返回相应的错误信息。

你可能感兴趣的:(代码解析,java)