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

发布时间:2024年01月05日

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

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

        //根据用户提交的用户名username查询数据库
        LambdaQueryWrapper<Employee> 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<Employee> login(HttpServletRequest request, @RequestBody Employee employee){

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

2.
? ? ? ? String password = employee.getPassword();

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

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

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

4.
? ? ? ? LambdaQueryWrapper<Employee> 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);
? ? }

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

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

文章来源:https://blog.csdn.net/m0_67930426/article/details/135409702
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。