《web应用技术》第十一次作业

1、验证过滤器进行权限验证的原理。

代码展示:

@Slf4j

@WebFilter(urlPatterns = "/*")

public class LoginCheckFilter implements Filter {

    @Override

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        HttpServletRequest req = (HttpServletRequest) request;

        HttpServletResponse resp = (HttpServletResponse) response;

        String url = req.getRequestURL().toString();

        log.info("请求的url: {}",url);

        if(url.contains("login")){

            log.info("登录操作, 放行...");

            chain.doFilter(request,response);

            return;

 }

        String jwt = req.getHeader("token");

        if(!StringUtils.hasLength(jwt)){

            log.info("请求头token为空,返回未登录的信息");

            Result error = Result.error("NOT_LOGIN");

            String notLogin = JSONObject.toJSONString(error);

            resp.getWriter().write(notLogin);

            return;

        }

        try {

            JwtUtils.parseJWT(jwt);

        } catch (Exception e) {//jwt解析失败

            e.printStackTrace();

            log.info("解析令牌失败, 返回未登录错误信息");

            Result error = Result.error("NOT_LOGIN");

            String notLogin = JSONObject.toJSONString(error);

            resp.getWriter().write(notLogin);

            return;

        }

        log.info("令牌合法, 放行");

        chain.doFilter(request, response);

    }

}

2、Apifox的使用

3、Git的继续使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/714756.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

轻松实现H5页面下拉刷新:滑动触发、高度提示与数据刷新全攻略

前段时间在做小程序到H5的迁移,其中小程序中下拉刷新的功能引起了产品的注意。他说到,哎,我们迁移后的H5页面怎么没有下拉刷新,于是乎,我就急忙将这部分的内容给填上。 本来是计划使用成熟的组件库来实现,…

手把手教你如何在Windows11下安装Docker容器

文章的主要要点: 为什么使用Docker:Docker可以简化部署过程,特别适合新手或在学习新技能(如Redis、MySQL、消息队列、Nginx等)时使用。 安装前的准备:在安装Docker之前,需要在Windows中开启一些…

python13 元组类型

元组用 () 声明,注意如果只有一个元素时要在元素后面加个 逗号, 否则不是类型就不是元组了。 声明方式2内置函数声明 data tuple(helloworld); 元组是不可变列表, 元组可以使用序列的所有功能。具体可以看我以前序列的文章 元组里的元素可以是多种数据类…

zynq qemu模拟器环境搭建

qemu是硬件模拟器,方便有些同学没得开发板想验证一些driver是否在指定板卡上可以测试,qemu就实现了该功能,选择qemu模拟器最好是选择cpu厂商指定qemu源码,这样测试结果更加逼真。本文章主要介绍如何搭建zynq平台qemu模拟器环境。 …

​单级高频谐振小放

目录 高频交流等效电路 质量指标 增益 通频带 选择性 高频交流等效电路 质量指标 增益 YL撇是怎么来的。 通频带 选择性

12 款 Android 照片恢复应用程序列表

丢失难忘的照片总是令人痛苦的。如果软件崩溃或意外删除,Android 设备上的照片也可能会丢失。这时照片恢复应用程序就派上用场了。查看我们为 Android 收集的顶级照片恢复应用程序。 但是,您不会想为自己选择任何照片恢复应用程序。因此,我们…

浅析Spring中Async注解底层异步线程池原理

一、前言 开发中我们经常会用到异步方法调用,具体到代码层面,异步方法调用的实现方式有很多种,比如最原始的通过实现Runnable接口或者继承Thread类创建异步线程,然后启动异步线程;再如,可以直接用java.uti…

Python爬虫JS逆向进阶课程

这门课程是Python爬虫JS逆向进阶课程,将教授学员如何使用Python爬虫技术和JS逆向技术获取网站数据。学习者将学习如何分析网站的JS代码,破解反爬虫机制,以及如何使用Selenium和PhantomJS等工具进行模拟登录和数据抓取。课程结合实例演练和项目…

【鸿蒙 HarmonyOS】Swiper组件

一、背景 项目中通常会遇到图片轮播,内容轮播的场景;如:在一些应用首页显示推荐的内容时,需要用到轮播显示的能力。 二、源码地址 ✍Gitee开源项目地址👉:https://gitee.com/cheinlu/harmony-os-next-swi…

【JKI SMO】框架讲解(二)

JKI State Machine 讲解 将JKI State Machine 模板拖曳到程序框图中, 如下图, 此模板会默认放置一个OK按钮在前面板中,用于提示用户如何增加一个简单的用户事件去使用此框架。 “Event Structure”,Idle:此分支可以设…

3D ToF赋能小米CyberDog 2提升视觉灵敏度

随着科技的进步,智能机器人越来越多地融入我们的日常生活。其中,CyberDog 2作为一款前沿的四足机器人,凭借其出色的视觉灵敏度和多功能技术配备,受到了广泛的关注。本文将重点探讨CyberDog 2的视觉系统,尤其是其四种不同类型的摄像头如何共同提升其视觉灵敏度,以及激光传…

c++_0基础_讲解7 练习

这一讲我为大家准备了几道题目,大家试着独自做一下(可能来自不同网站) 整数大小比较 - 洛谷 题目描述 输入两个整数,比较它们的大小。若 x>yx>y ,输出 > ;若 xyxy ,输出 &#xff…

在ubuntu中恢复误删除的文件

1、安装 TestDisk 在 Ubuntu 上,可以使用以下命令安装 TestDisk: sudo apt-get install testdisk2、查询你删除的文件所在那个分区 #查询分区 df -h #我这里是/dev/sda2 #也可以使用下面命令查看具体哪个分区 lsblk3、查询该分区是什么系统类型 sudo …

【CICID】GitHub-Actions语法

[TOC] 【CICID】GitHub-Actions语法 1 场景 ​ 当我们开发过程中,经常需要提交代码,打包,部署新代码到对应的环境,整个过程都是人工手动操作,占据开发人员大量时间,并且很繁琐容易出错。所以需要借助一些…

redis 缓存jwt令牌设置更新时间 BUG修复

大家好,今天我又又又来了,hhhhh。 上文中 我们永redis缓存了token 但是我们发现了 一个bug ,redis中缓存的token 是单用户才能实现的。 就是 我 redis中存储的键 名 为token 值 是jwt令牌 ,但是如果 用户a 登录 之后 创建一个…

LeetCode43.字符串相乘【大整数相乘】

LeetCode刷题记录 文章目录 📜题目描述💡解题思路 📜题目描述 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 注意:不能使用任何内置的 Big…

C++ 算法教程

归并排序 #include<iostream> using namespace std; template <class T> void Merge(T data[],int start,int mid,int end) {int len1 mid - start 1, len2 end - mid;int i, j, k;T* left new int[len1];T* right new int[len2];for (i 0; i < len1; i)…

数据结构--力扣104,110 二叉树相关(C

1.力扣104。二叉树的最大深度-. - 力扣&#xff08;LeetCode&#xff09; 2.力扣110。平衡二叉树->. - 力扣&#xff08;LeetCode&#xff09; 1. 叶子结点 指&#xff1a;没有子节点的节点 思路&#xff1a; 求其 左子树和右子树的最大深度&#xff0c;返回其中最大值即可…

《C语言》文件操作

文章目录 一、认识文件1、文件的概念2、程序文件3、数据文件4、文件名 三、二进制文件和文本文件四、文件的打开和关闭1、流2、标准流3、文件指针4、文件的关闭和打开 四、文件的顺序读写文件的随机读写1、fseek2、ftell3、rewind4.int origin 一、认识文件 主要讨论数据文件 1…

C++ 矩阵乘法

描述 如果A是个x行y列的矩阵&#xff0c;B是个y行z列的矩阵&#xff0c;把A和B相乘&#xff0c;其结果将是另一个x行z列的矩阵C。这个矩阵的每个元素是由下面的公式决定的 矩阵的大小不超过100*100 输入描述&#xff1a; 第一行包含一个正整数x&#xff0c;代表第一个矩阵的…
最新文章