当前位置: 首页 > news >正文

基于 Spring Boot 瑞吉外卖系统开发(二)

基于 Spring Boot 瑞吉外卖系统开发(二)

员工登录功能实现

员工登录页面login.html存放在/resources/backend/page/login目录下。
启动项目,在浏览器中通过地址“http://localhost:8080/backend/page/login/login.html”访问员工登录页面。
在这里插入图片描述
按下快捷键F12打开浏览器调试工具后,单击“登录”按钮,浏览器抓取到登录的请求信息。
在这里插入图片描述

定义Mapper接口

自定义的Mapper接口可以继承BaseMapper获得通用的增删改查功能。
在项目的src/main/java目录下创建com.itheima.reggie.mapper包,在该包下创建员工Mapper接口EmployeeMapper。

@Mapper
public interface EmployeeMapper extends BaseMapper<Employee> {

}

定义Service接口

public interface EmployeeService extends IService<Employee> {
}

定义Service实现类

@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService {

}

定义Controller类

@RestController
@RequestMapping("/employee")
public class EmployeeController {

    @Autowired
    private EmployeeService employeeService;

    @PostMapping("/login")
    public R<Employee> login(@RequestBody Employee employee, HttpServletRequest request){
        //1.将页面提交的密码password进行MD5加密处理
        String password = employee.getPassword();
        password = DigestUtils.md5DigestAsHex(password.getBytes());
        //2.根据页面提交的用户名username查询数据库
        QueryWrapper<Employee> query = new QueryWrapper<>();
        query.eq("username", employee.getUsername());
        Employee one = employeeService.getOne(query);
        //3.如果没有查询到员工信息或者密码不正确,则返回登录失败结果
        if(one==null || !one.getPassword().equals(password)){
            return R.error("用户名或密码错误");
        }
        //4.查看员工状态,如果为已禁用状态,则返回员工已禁用结果
        if(one.getStatus() == 0){
            return R.error("账号已禁用");
        }
        //5.登录成功,将员工Id存入Session并返回员工信息
        request.getSession().setAttribute("loginEmployee", one);
        return R.success(one);
    }
}

登录功能测试

启动项目,在浏览器中通过地址“http://localhost:8080/backend/page/login/login.html”访问员工登录页面,在登录页面使用错误的账号或密码进行登录。
在这里插入图片描述
使用正确的账号和密码进行登录。
在这里插入图片描述

登录拦截功能

管理端的员工登录已经实现完成,但是此时员工如果不登录,也可以直接访问管理端的其他页面。
对此,可以使用拦截器对请求进行拦截判断,判断员工是否已经完成登录,如果没有登录则跳转到登录页面。
com/itheima/reggie/config/LoginInterceptor.java

public class LoginInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object loginEmployee = request.getSession().getAttribute("loginEmployee");
        if  (loginEmployee == null) {
            //未登录,返回登录页
            response.sendRedirect("/backend/page/login/login.html");
            return  false ; //不放行
        }
        return  true ; //放行
    }

}

com/itheima/reggie/config/WebMvcConfig.java中注册拦截器,并设置拦截的路径。

    /**
     * 员工登录拦截器
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/backend/page/**","/backend/index.html")
                .excludePathPatterns("/backend/page/login/login.html");
    }

这里拦截器只设置了拦截前端的页面,真实开发后端接口也需要拦截。

至此,员工没有成功登录的话,访问其他路径都会自动跳转到登录页面。

员工退出登录

员工登录成功后,会将对应的员工信息存入到Session中,以记录员工的登录状态。相反,如果想要实现员工退出,则可以在收到退出请求后,将当前员工存放在Session中的信息清除即可。
/controller/EmployeeController.java 添加logout方法。

    @PostMapping("/logout")
    public R<String> logout(HttpServletRequest request){
        request.getSession().removeAttribute("loginEmployee");
        return R.success("退出成功");
    }

至此,点击后台首页右上角退出按钮进行退出。
在这里插入图片描述

相关文章:

  • php调用大模型应用接口实现流式输出以及数据过滤
  • Redis常见问题排查与解决方案指南
  • HCIA二层综合实验
  • 一款轻量级的Docker日志查看器!!
  • LeetCode 每日一题 2025/3/31-2025/4/6
  • 网络攻防快速入门笔记web | 02 SQL注入
  • Elixir语言的云计算
  • 示例项目文档模板集:TaskBoard 任务管理系统
  • linux环境下的硬盘分区格式化工具介绍 fdisk,gdisk,parted,cfdisk,cgdisk,sfdisk,gparted 笔记250407
  • 构筑数字身份管理体系 赋能企业数字化转型
  • 使用阿里ECS搭建web服务器
  • GO简单开发grpc
  • Oracle数据库数据编程SQL<5 正则表达式函数*****>
  • C++——智能指针详解及实现
  • 青少年编程与数学 02-015 大学数学知识点 07课题、数值分析
  • 全面支持MCP协议,开启便捷连接之旅,MaxKB知识库问答系统v1.10.3 LTS版本发布
  • 12AI搭建preparationのCIFAR-10数据集分类(论训练的必要性)
  • Redis设计与实现-集群
  • 数字政府政务服务领域智能化应用解决方案
  • 硬件产品经理:智慧标签产品需求说明
  • 福州一宋代古墓被指沦为露天厕所,仓山区博物馆:已设置围挡
  • 美官方将使用华为芯片视作违反美出口管制行为,外交部回应
  • 俄媒:俄乌伊斯坦布尔谈判将于北京时间今天17时30分开始
  • 上海虹桥国际咖啡文化节开幕,推出茶咖文化特色街区、宝妈咖啡师培训
  • 一图读懂丨创新创业人才最高补贴500万元!临港新片区发布创客新政“十二条”
  • 俄谈判代表团已抵达土耳其,谈判预计在莫斯科时间10时左右开始