返回顶部
首页 > 资讯 > 后端开发 > Python >Springboot 如何实现filter拦截token验证和跨域
  • 242
分享到

Springboot 如何实现filter拦截token验证和跨域

2024-04-02 19:04:59 242人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

SpringBoot filter拦截token验证和跨域 背景 web验证授权合法的一般分为下面几种 使用session作为验证合法用户访问的验证方式 使用自己实

SpringBoot filter拦截token验证和跨域

背景

web验证授权合法的一般分为下面几种

  • 使用session作为验证合法用户访问的验证方式
  • 使用自己实现的token
  • 使用OCA标准

在使用api接口授权验证时,token是自定义的方式实现起来不需要引入其他东西,关键是简单实用。

合法登陆后一般使用用户UID+盐值+时间戳使用多层对称加密生成token并放入分布式缓存中设置固定的过期时间长(和session的方式有些相同),这样当用户访问时使用token可以解密获取它的UID并据此验证其是否是合法的用户。

#springboot中实现filter

  • 一种是注解filter
  • 一种是显示的硬编码注册filter

先有filter


import javax.servlet.annotation.WEBFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import springfox.documentation.spring.web.JSON.json;
import com.alibaba.fastjson.JSON; 
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.Http.httpservletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
//@WebFilter(urlPatterns = { "/api/v  
    @Bean  
    public CorsFilter corsFilter() {  
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();  
        source.reGISterCorsConfiguration("
@Configuration  
public class CorsConfig extends WebmvcConfigurerAdapter{  
  
   
  
 private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*"); // 1
        corsConfiguration.addAllowedHeader("*"); // 2
        corsConfiguration.addAllowedMethod("*"); // 3
        return corsConfiguration;
    }
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig()); // 4
        return new CorsFilter(source);
    }     
} 

springboot配置Filter & 允许跨域请求

1.filter类

加注解:


@WebFilter(filterName = "authFilter", urlPatterns = "/*")

代码如下:


package com.activiti.filter; 
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
 
// renwenqiang
@WebFilter(filterName = "authFilter", urlPatterns = "/*")
public class SystemFilter implements Filter {
 
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException,
            ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        response.setHeader("Access-Control-Allow-Origin","*");
        System.out.println(request.getRequestURL());
        filterChain.doFilter(request, servletResponse);
    }
 
    @Override
    public void destroy() { 
    }
 
    @Override
    public void init(FilterConfig arg0) throws ServletException { 
    }
}

2.启动类

加注解:


@ServletComponentScan(basePackages = {"com.activiti.filter"})

代码如下:


package com; 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.ORM.jpa.vendor.HibernateJpaSessionFactoryBean;
import org.springframework.scheduling.annotation.EnableScheduling;
 
@SpringBootApplication(exclude = {
        org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class,
        org.activiti.spring.boot.SecurityAutoConfiguration.class })
@ServletComponentScan(basePackages = {"com.activiti.filter"})
public class DemoActiviti0108Application {
    
    @Bean
    public HibernateJpaSessionFactoryBean sessionFactory() {
        return new HibernateJpaSessionFactoryBean();
    }
 
    public static void main(String[] args) {
        SpringApplication.run(DemoActiviti0108Application.class, args);
    } 
}

3.Jquery ajax请求代码实例:


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
<div id="app">
<hr>
<h2>模型列表</h2>
<a href="#" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  id="huizhi">绘制流程</a>
<hr>
<table border="1">
    <tr>
        <td>id</td>
        <td>deploymentId</td>
        <td>name</td>
        <td>cateGory</td>
        <td>optional</td>
    </tr>
    <tr v-for="item in models">
        <td>{{ item.id }}</td>
        <td>{{ item.deploymentId }}</td>
        <td>{{ item.name }}</td>
        <td>{{ item.category }}</td>
        <td>
            <a href="#" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >编辑</a>&nbsp;&nbsp;
            <a href="#" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >发布</a>&nbsp;&nbsp;
            <a href="#" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >删除</a>
        </td>
    </tr>
</table>
</div>
 
    <script src="https://cdn.bootCSS.com/jquery/2.2.2/jquery.js"></script>
    <script src="https://cdn.bootcss.com/Vue/2.6.10/vue.js"></script>
    <script>
    new Vue({
      el: '#app',
      data: {
        models: []
      },
      created: function () {
        $.ajax({
            type: 'GET',
            url: 'http://localhost:8081/activiti/model/all',
            beforeSend: function() {
                console.log('beforeSend');
            },
            data:{},
            dataType: "json",
            xhrFields: {
                withCredentials: false
            },
            crossDomain: true,
            async: true,
            //jsonpCallback: "jsonpCallback",//服务端用于接收callback调用的function名的参数  
        }).done((data) => {
            console.log('done');
            console.log(data);
            this.models = data;
        }).fail((error) => {
            console.log('fail');
            console.log('error');
        });
      }
    })        
    </script> 
</body>
</html>

大功告成 回家睡觉 嘻嘻嘻~

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Springboot 如何实现filter拦截token验证和跨域

本文链接: https://lsjlt.com/news/132430.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Springboot 如何实现filter拦截token验证和跨域
    Springboot filter拦截token验证和跨域 背景 web验证授权合法的一般分为下面几种 使用session作为验证合法用户访问的验证方式 使用自己实...
    99+
    2024-04-02
  • SpringBoot登录验证token拦截器如何实现
    这篇文章主要讲解了“SpringBoot登录验证token拦截器如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot登录验证token拦截器如何实现”吧!用户访问接口验...
    99+
    2023-07-02
  • SpringBoot登录验证token拦截器的实现
    目录注解定义token生成与验证拦截器定义拦截器配置定义拦截器的方法执行类注解使用返回值-全局异常类定义各种测试不传token制造可行的假token伪造token测试拓展:从请求中获...
    99+
    2024-04-02
  • 使用Filter拦截器如何实现请求跨域转发
    目录Filter拦截器实现请求跨域转发在使用Filter实现转发后特做一次记录使用filter解决跨域在web.xml配置拦截器过滤器代码Filter拦截器实现请求跨域转发 因为公司...
    99+
    2024-04-02
  • vue拦截器如何实现统一token并兼容IE9验证功能
    小编给大家分享一下vue拦截器如何实现统一token并兼容IE9验证功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!项目中使用...
    99+
    2024-04-02
  • 如何使用SpringBoot拦截器实现登录拦截
    小编给大家分享一下如何使用SpringBoot拦截器实现登录拦截,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!可以对URL路径进行拦截,可以用于权限验证、解决乱码...
    99+
    2023-06-29
  • Java JWT如何实现跨域身份验证
    今天小编给大家分享一下Java JWT如何实现跨域身份验证的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、JWT...
    99+
    2023-06-26
  • SpringBoot如何实现登录拦截器
    这篇文章主要介绍“SpringBoot如何实现登录拦截器”,在日常操作中,相信很多人在SpringBoot如何实现登录拦截器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringBoot如何实现登录拦截器...
    99+
    2023-07-02
  • SpringBoot2如何整合JWT框架解决Token跨域验证问题
    小编给大家分享一下SpringBoot2如何整合JWT框架解决Token跨域验证问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、传统Session认证1、认...
    99+
    2023-06-02
  • Java如何实现Token登录验证
    这篇文章主要介绍“Java如何实现Token登录验证”,在日常操作中,相信很多人在Java如何实现Token登录验证问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java如何实现Token登录验证”的疑惑有所...
    99+
    2023-07-05
  • 如何在Springboot实现拦截器功能
    preHandle: 预先处理,在目标的controller方法执行之前,进行处理 postHandle: 在目标的controller方法执行之后,到达指定页...
    99+
    2024-04-02
  • SpringBoot如何实现全局和局部跨域
    这篇文章主要介绍“SpringBoot如何实现全局和局部跨域”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot如何实现全局和局部跨域”文章能帮助大家解决问题。什么是跨域所谓的跨域请求...
    99+
    2023-07-04
  • 使用Struts2拦截器如何实现一个登录验证功能
    使用Struts2拦截器如何实现一个登录验证功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Struts2拦截器Struts2拦截器的概念和Spring Mvc拦截器一样...
    99+
    2023-05-31
    struts 登录验证 拦截器
  • Springboot如何实现自定义mybatis拦截器
    这篇文章将为大家详细讲解有关Springboot如何实现自定义mybatis拦截器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实践的准备 : 整合mybatis ,然后故意写了3个查询方法, ...
    99+
    2023-06-22
  • SSM项目中如何使用拦截器实现登录验证功能
    小编给大家分享一下SSM项目中如何使用拦截器实现登录验证功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!登录接口实现public User ...
    99+
    2023-06-28
  • node如何实现基于token的身份验证
    小编给大家分享一下node如何实现基于token的身份验证,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最近研究了下基于toke...
    99+
    2024-04-02
  • SpringBoot如何使用Sa-Token实现权限认证
    今天小编给大家分享一下SpringBoot如何使用Sa-Token实现权限认证的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2023-07-06
  • tp6+jwt实现token生成及验证,tp+vue请求接口header中加入token报跨域错误解决
    生成、验证token 原文:TP6 JWT Token 生成 控制器使用 中间件使用 使用compose安装jwt类 (在cmd中切换至tp项目文件夹中运行一下命令,运行成功后会在vendor目录中生...
    99+
    2023-09-25
    vue.js php 前端
  • 基于NodeJs+Express+MySQL 实现实现登录注册接口+token生成与解析验证+跨域-CORS
    目录 一、express是什么? 二、安装 express 三、安装Mysql 四、安装 nodemon 实现项目热更新 五、这里先了解下express的post get delete接口 post接口说明: get接口说明 :  DEL...
    99+
    2023-09-03
    express node.js
  • springboot跨域如何设置SameSite的实现
    前言 今天记录一个前段时间遇到的一个小问题的解决方法, 跨域!!! 相信跨域这个问题, 做开发的或多或少都遇到过, 而且已经有很多博主已经分享了相关的内容, 这次我用他们的方式都没...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作