瑞吉外卖实战学习--完善登录功能

2024-03-26 06:20

本文主要是介绍瑞吉外卖实战学习--完善登录功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

完善登录功能

  • 1、创建自定义过滤器LoginCheckFiler
    • 1.1通过@WebFilter创建过滤器
    • 1.2 验证是否可以拦截请求
    • 1.3 代码
  • 2、在启动类加入注解@ServletComponentScan 用来扫描过滤器
    • 触发所有的过滤器@ServletComponentScan
  • 3、完善过滤器的处理逻辑
    • 3.1判断是否需要是要放行的请求
    • 3.2判断用户是否登录
    • 3.3如果没有登录返回请求体并携带msg信息

1、创建自定义过滤器LoginCheckFiler

1.1通过@WebFilter创建过滤器

在这里插入图片描述

1.2 验证是否可以拦截请求

在这里插入图片描述

1.3 代码

package com.example.ruiji_demo;import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;@Slf4j
@SpringBootApplication
@ServletComponentScan
public class RuijiDemoApplication {public static void main(String[] args) {SpringApplication.run(RuijiDemoApplication.class, args);log.info("项目启动成功");}}

2、在启动类加入注解@ServletComponentScan 用来扫描过滤器

触发所有的过滤器@ServletComponentScan

在这里插入图片描述

3、完善过滤器的处理逻辑

3.1判断是否需要是要放行的请求

3.2判断用户是否登录

3.3如果没有登录返回请求体并携带msg信息

package com.example.ruiji_demo.filter;import com.alibaba.fastjson2.JSON;
import com.example.ruiji_demo.common.R;
import jakarta.servlet.*;
import jakarta.servlet.annotation.WebFilter;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.AntPathMatcher;import java.io.IOException;
import java.util.logging.LogRecord;/*** @author jitwxs* @date 2024年03月25日 22:24*/
@WebFilter(filterName = "loginCheckFilter", urlPatterns = "/*")
@Slf4j
public class LoginCheckFilter implements Filter {
//    路径匹配器,支持通配符public static final AntPathMatcher PATH_MATCHER = new AntPathMatcher();@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;//        1、获取本次请求的urlString requestUrl = request.getRequestURI();
//        2、定义不需要处理的路径String[] urls = new String[]{"/employee/login","/employee/logout","/backeed/**","/front/**"};
//        3、判断本次请求是否需要处理,调用匹配路径boolean check =  check(urls,requestUrl);//        4.检测路径是否需要筛选如果不需要筛选直接放行if(check){filterChain.doFilter(request,response);return;}
//        5.判断是否登录过if(request.getSession().getAttribute("employee") != null){filterChain.doFilter(request,response);return;}//        6.如果没有登录过,通过输出流方向客户端页面响应数据response.getWriter().write(JSON.toJSONString(R.error("NOTLOGIN")));return;}/*** 匹配路径,检查本次请求是否需要放行* @param urls* @param requestUrl* @return*/public boolean check(String[] urls,String requestUrl){for(String url:urls){boolean match = PATH_MATCHER.match(url,requestUrl);log.info("match:{}",match);if(match){return true;}}return false;}
}

这篇关于瑞吉外卖实战学习--完善登录功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/847535

相关文章

Java CompletableFuture如何实现超时功能

《JavaCompletableFuture如何实现超时功能》:本文主要介绍实现超时功能的基本思路以及CompletableFuture(之后简称CF)是如何通过代码实现超时功能的,需要的... 目录基本思路CompletableFuture 的实现1. 基本实现流程2. 静态条件分析3. 内存泄露 bug

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要