《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的使用

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

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值