瑞吉外卖实战学习--登录过滤器和判断是否登录过

2024-03-26 22: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/850041

相关文章

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

java中判断json key是否存在的几种方法

《java中判断jsonkey是否存在的几种方法》在使用Java处理JSON数据时,如何判断某一个key是否存在?本文就来介绍三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目http://www.chinasem.cn录第一种方法是使用 jsONObject 的 has 方法

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

90%的人第一步就错了! 顺利登录wifi路由器后台的技巧

《90%的人第一步就错了!顺利登录wifi路由器后台的技巧》登录Wi-Fi路由器,其实就是进入它的后台管理页面,很多朋友不知道该怎么进入路由器后台设置,感兴趣的朋友可以花3分钟了解一下... 你是不是也遇到过这种情况:家里网速突然变慢、想改WiFi密码却不知道从哪进路由器、新装宽带后完全不知道怎么设置?别慌

Oracle Scheduler任务故障诊断方法实战指南

《OracleScheduler任务故障诊断方法实战指南》Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,:本文主要介绍OracleSchedul... 目录前言一、故障场景:当定时任务突然“消失”二、基础环境诊断:搭建“全局视角”1. 数据库实例与PDB状态2

Git进行版本控制的实战指南

《Git进行版本控制的实战指南》Git是一种分布式版本控制系统,广泛应用于软件开发中,它可以记录和管理项目的历史修改,并支持多人协作开发,通过Git,开发者可以轻松地跟踪代码变更、合并分支、回退版本等... 目录一、Git核心概念解析二、环境搭建与配置1. 安装Git(Windows示例)2. 基础配置(必

MySQL使用EXISTS检查记录是否存在的详细过程

《MySQL使用EXISTS检查记录是否存在的详细过程》EXISTS是SQL中用于检查子查询是否返回至少一条记录的运算符,它通常用于测试是否存在满足特定条件的记录,从而在主查询中进行相应操作,本文给大... 目录基本语法示例数据库和表结构1. 使用 EXISTS 在 SELECT 语句中2. 使用 EXIS

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版