【无标题】

这里写目录标题

  • 1.用户登录和登出
    • 1.1 登录
    • 1.2 登出
    • 二级目录
      • 三级目录

1.用户登录和登出

登录功能是整个项目的唯一入口,只有用户登录了,才能访问项目的其他页面

1.1 登录

  • 根据用户、密码查询用户
  • 校验用户是否存在
    • 用户不存在,登录失败.
    • 用户存在,登录成功,将用户编号存入session
 @PostMapping("/login")
public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee) {
	 // 1、将页面提交的密码password进行md5加密处理
     String password = employee.getPassword();
     password = DigestUtils.md5DigestAsHex(password.getBytes());

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

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

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

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

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

问:为什么要将用户登录信息存入session
session代表服务器与浏览器的一次会话过程
【无标题】_第1张图片

流程如下:

  1. 最开始浏览器是没有JSESSIONID的cookie,此时服务器端的内存里开辟一块内存,这块内存就叫做session,并把这个session的唯一标识JSESSIONID返回给游览器。

【无标题】_第2张图片

  1. 再次访问地址(服务器端任何地址)

1.2 登出

二级目录

三级目录

你可能感兴趣的:(java,服务器,开发语言)