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

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

相关文章

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient