当前位置: 首页 > news >正文

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

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

Filter过滤器:javaweb三大组件(Servlet,Filter,Listener)之一;过滤器可以把对资源的请求拦截下来,从而实现一些特殊功能;过滤器一般完成一些通用操作,比如登录校验等。

执行对应的业务功能之前先判断是否登录,如果登录则访问对应的业务功能,如果没有登录则返回错误信息。

定义Filter:定义一个类,实现Filter接口,并重写其所有方法。(包含初始化init方法和销毁destroy方法,只调用一次,doFilter方法,拦截请求之后调用,调用多次)

配置Filter:Filter类上加@WebFilter注解,配置拦截路径的资源,启动类上加@ServletComponebtScan开启Servlet组件支持。

package com.example.librarymasterlendlist.filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;@WebFilter(urlPatterns = "/*")
public class DemoFilter implements Filter {@Override//初始化方法,只调用一次public void init(FilterConfig filterConfig) throws ServletException {System.out.println("init 初始化方法执行了");}@Override//拦截到请求之后调用,调用多次public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("拦截到了请求……放行前逻辑");filterChain.doFilter(servletRequest,servletResponse);System.out.println("拦截到了请求……放行后逻辑");}@Override//销毁方法,只调用一次public void destroy() {System.out.println("destroy 销毁方法执行了");}
}

拦截到了请求:

执行流程:放行前的逻辑 / 放行(访问对应的web资源)/ 放行后的逻辑(回到过滤器)

放行后访问对应资源,资源访问完成后,还会回到Filter中,执行放行后的逻辑。

postman测试:(拿到了响应结果)

控制台输出:

拦截路径

拦截具体路径:/login 只访问/login路径时,才会被拦截。

目录拦截:/list/* 访问/list下的所有资源,都会被拦截。

拦截所有:/* 访问所有资源,都会被拦截。

过滤器链:一个web应用中,可以配置多个过滤器,形成过滤器链。filterChain.doFilter(servletRequest,servletResponse);表示放行到下一个过滤器,如果当前时最后一个过滤器则放行到web资源当中。(顺序:注解配置的Filter,优先级按照过滤器类名的自然排序)

2、将自己之前的项目,加上过滤器验证功能。

登录校验的基本流程:先访问登录接口login,登录成功后服务端生成一个jwt令牌并返回给前端,前端将jwt令牌记录下来,在后续的每一次请求中都会将jwt令牌携带到服务端。请求到达服务端后要想访问对应的服务功能,此时必须先校验令牌的有效性,在过滤器当中实现,无效则响应错误的信息,有效则放行访问对应的web资源,执行对应的业务操作。

首先测试/login:

测试/lend_list查询所有数据:

如果改变了令牌的值,则报错:

3、Apifox的使用

自动生成接口和接口文档:

http://www.lryc.cn/news/371863.html

相关文章:

  • flutter中实现首行缩进两端对齐
  • Vitis HLS 学习笔记--Vitis Accelerated Libraries介绍
  • Vue3-滑动到最右验证功能
  • 深入理解MyBatis XML配置文件
  • 006 CentOS 7.9 elasticsearch7.10.0安装及配置
  • 蚂蚁分类信息系统二开仿么么街货源客模板微商货源网源码(带手机版)
  • 综合数据分析及可视化实战
  • N32G45XVL-STB之移植LVGL(8.4.0)
  • SwaggerSpy:一款针对SwaggerHub的自动化OSINT安全工具
  • Python酷库之旅-比翼双飞情侣库(05)
  • numpy数组transpose方法的基本原理
  • Docker Swarm集群部署管理
  • 碎片化知识如何被系统性地吸收?
  • 安鸾学院靶场——安全基础
  • ChatGPT:自然语言处理的新纪元与OpenAI的深度融合
  • AI引领项目管理新时代:效率与智能并驾齐驱
  • AUTOSAR汽车电子嵌入式编程精讲300篇-电池管理系统中 CAN 通信模块的设计与应用(中)
  • k8s概述
  • 多线程的运用
  • TF-IDF(Term Frequency-Inverse Document Frequency)算法
  • 富格林:细心发现虚假确保安全
  • 6.2 文件的缓存位置
  • 在Elasticsearch中,过滤器(Filter)是用于数据筛选的一种机制
  • MySQL----主键、唯一、普通索引的创建与删除
  • css预处理是什么?作用是什么?
  • 镜像拉取失败:[ERROR] Failed to pull docker image
  • FM全网自动采集聚合影视搜索源码
  • 【DevOps】什么是 pfSense?免费构建SDWAN
  • elementui table超出两行显示...鼠标已入tip显示
  • 空白服务器安装系统