首页 > 其他分享 >后端登陆的过滤器

后端登陆的过滤器

时间:2024-01-19 09:12:41浏览次数:20  
标签:Result System println 登陆 error 过滤器 import out

后端登陆的过滤器


package com.itheima.filter;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.itheima.pojo.Result;
import com.itheima.utils.JwtUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.configurationprocessor.json.JSONObject;
import org.springframework.util.StringUtils;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Slf4j
@WebFilter(urlPatterns="/*")
public class DemoFilter implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {  //初始化方法只调用一次
        Filter.super.init(filterConfig);
        System.out.println("初始执行");
    }
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
        System.out.println("执行前逻辑");
//        放行没有这句会没有数据
        HttpServletRequest request=(HttpServletRequest) servletRequest;
        HttpServletResponse response=(HttpServletResponse) servletResponse;
        String url=request.getRequestURL().toString();
        if(url.contains("login")||url.contains("Login")||url.contains(".html")){
            log.info("登录");
            chain.doFilter(servletRequest,servletResponse);
            return ;
        }
        String jwt=request.getHeader("Token");
        if(!StringUtils.hasLength(jwt)){
            log.info("未登录");
            Result error=new Result().error("Not_Login");
            String notLogin= new Gson().toJson(error);
            response.getWriter().write(notLogin);
            return ;
        }
        try {
            JwtUtils.parseJwt(jwt);
        } catch (Exception e) {
            log.info("解析令牌出错");
            e.printStackTrace();
            Result error=new Result().error("Not_Login");
            String notLogin= new Gson().toJson(error);
            response.getWriter().write(notLogin);
            return ;
        }
        System.out.println(jwt);
        log.info("令牌合法");
        chain.doFilter(servletRequest,servletResponse);
        System.out.println("执行后逻辑");
    }
    @Override
    public void destroy() {  //销毁方法只调用一次
        Filter.super.destroy();
        System.out.println("销毁执行");
    }
}

 

标签:Result,System,println,登陆,error,过滤器,import,out
From: https://www.cnblogs.com/luo9tian/p/17973895

相关文章

  • 使用过滤器记录api接口访问时长并记录日志
    usingERP.Helper;usingERP.Models.User;usingSystem;usingSystem.Diagnostics;usingSystem.Web;usingSystem.Web.Http.Controllers;usingSystem.Web.Http.Filters;usingActionFilterAttribute=System.Web.Http.Filters.ActionFilterAttribute;usingLogger......
  • Druid作为数据源(连接池、过滤器、日志)
    Druid作为数据源(连接池、过滤器、日志)druid基本参数介绍name:数据源名称如果存在多个数据源,监控的时候可以通过名字来区分开来如果没有配置,将会生成一个名字,格式是"DataSource-"+System.identityHashCode(this)jdbcUrl:连接数据库的url,不同数据库不一样username:连接......
  • Java登陆第三十一天——Filter
    好好好,好久不见了。不多说,继续干。Filter即过滤器,专用于过滤客户端所发送的请求。生活中的过滤器筛子地铁闸门公司前台保安以上举例都是生活中的过滤器。在代码中,过滤器的作用是控制访问资源。Filter所有的过滤器都要实现Filter接口,Filter接口方法如下:方......
  • 个性化登陆认证
    自定义表单登录页面importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.security.config.annotation.web.builders.HttpSecurity;importorg.springframework.security.config.an......
  • 163邮箱登陆GPT:解锁智能交流的全新体验
    在当今数字化的社会中,电子邮件已经成为人们沟通、工作和信息传递的不可或缺的工具。其中,163邮箱作为中国最受欢迎的邮件服务提供商之一,一直以来都在为用户提供稳定、安全的电子邮件服务。近年来,随着人工智能技术的迅猛发展,有人开始思考,能否将163邮箱与GPT(GenerativePre-trainedTr......
  • Outlook邮箱登陆技巧有什么
    在数字时代,电子邮件已经成为我们日常沟通和工作的不可或缺的一部分。而Outlook邮箱作为一款强大而又广受欢迎的电子邮件客户端,其功能之丰富使得许多用户对其爱不释手。然而,要充分发挥Outlook的威力,熟知一些登陆技巧是至关重要的。在本文中,我们将探讨一些Outlook邮箱登陆的技巧,以便......
  • 布隆过滤器详解——转载自IT老暖男
    前言我们之前讲了Redis的缓存雪崩、穿透、击穿。在文章里我们说了解决缓存穿透的办法之一,就是布隆过滤器,但是上次并没有讲如何使用布隆过滤器。作为暖男的老哥,给你们补上,请叫我IT老暖男。什么是布隆过滤器布隆过滤器(BloomFilter),是1970年,由一个叫布隆的小伙子提出的,距今已......
  • CAN通信配置过滤器和使用三个邮箱发送
    RM比赛用的电机基本都使用CAN通信,但是一条CAN线上只用一个发送邮箱在挂在设备多的情况可能会导致发送不完,但其实完全可以把三个发送邮箱都用上。这里贴一下自己的CAN筛选器,接收以及发送的代码。完整的工程可以看我开源的飞机云台程序~项目代码开源地址:https://github.com/ittuann......
  • 【JS逆向】某乐网登陆密码加密逆向分析探索!
    一个网站的登陆密码加密逆向解密分析,没有混淆,加密代码还是比较好找的,只需要多花点耐心,多尝试,就能找到关键的加密代码片段。网址:aHR0cHMlM0EvL29hdXRoLmQuY24vYXV0aC9nb0xvZ2luLmh0bWw=登陆密码加密特征:b2927281520eba726728c6f5e9579228a3102f1462c52d708ba8ee622b2124a97545d0e3a6......
  • Python武器库开发-武器库篇之Git创建远程仓库和建立SSH key 免密登陆(三十七)
    武器库篇之Git创建远程仓库和建立SSHkey免密登陆(三十七)Git是一种版本控制系统,用于跟踪文件的更改和协调多人开发项目。它可以记录文件的历史更改,协助多人协作开发,并提供分支管理功能。Git是一个分布式系统,意味着每个人在自己的本地计算机上都有一份完整的代码仓库,并且可以独立......