当前位置: 首页 > 知识库问答 >
问题:

spring security-自定义过滤器定位

万俟经纶
2023-03-14

我需要以这样的方式自定义我的身份验证过程:

  1. 客户端发送带有“特殊”URL参数的请求(RESTAPI)

我把我的服务器端(2 3)分成两部分——(2)的自定义过滤器,它获取用户名——和(3)的自定义用户详细服务,它通过在数据库中查找名称来构建主体。

但是我不能正确地构建我的security.xml-每次它似乎根本不处理过滤器。我认为问题出在第一个(超文本传输协议)节点,但我无法理解我应该为过滤器设置什么位置。这是我的配置:

<http use-expressions="true" auto-config="true" authentication-manager-ref="authenticationManager">
    <intercept-url pattern="/*" access="isAuthenticated" />
    <custom-filter ref="casServiceTicketFilter" position="FIRST"/>
</http>

<authentication-manager alias="authenticationManager">
    <authentication-provider user-service-ref="wliAuthenticationService"/>
</authentication-manager>

<b:bean id="casServiceTicketFilter" class="org.WLICASAuthenticationFilter">
    <b:property name="casTicketValidateURL" value="${cas.ticket.validate.url}"/>
    <b:property name="authenticationManager" ref="authenticationManager"/>
</b:bean>

<b:bean id="wliAuthenticationService" class="org.WLIUserDetailService"/>

PS-请不要告诉我Spring有现成的CAS支持。它的配置有点不同,所以我需要创建自己的服务票证验证器实现

共有1个答案

施学
2023-03-14

您的自定义身份验证筛选器不应位于筛选器链中的第一个。它需要位于SecurityContextPersistenceFilter之后。使用

<custom-filter ref="casServiceTicketFilter" after="SECURITY_CONTEXT_FILTER"/>

相反。

如果启用调试日志记录,您应该能够清楚地看到每个请求的过滤器调用顺序以及是否调用了您的过滤器。

 类似资料:
  • 演示在网关追加一个header public class CustomFilter implements GlobalFilter, Ordered { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { // 演示在网关追加heade

  • SOFARPC 提供了一套良好的可扩展性机制,为各个模块提供 SPI 的能力。 SOFARPC 对请求与响应的过滤链处理方式是通过多个过滤器 Filter 来进行具体的拦截处理,该部分可由用户自定义 Filter 扩展,自定义 Filter 的执行顺序在内置 Filter 之后。具体方式如下: Bolt Filter 新建自定义 Filter 。 public class CustomFilter

  • 问题内容: 我试图在Log4J2中实现和配置自定义过滤器- 基于ThresholdFilter,但打算做更多。我已经看到了有关自定义追加程序的主题,这些主题遵循相同的插件注释语法,但是还没有找到有关自定义拟合程序的主题。 MyCustomFilter.java (基于ThresholdFilter) log4j2.xml LoggingRunner.java 配置语法似乎与Apache文档中的语法

  • 本文向大家介绍Django 自定义过滤器,包括了Django 自定义过滤器的使用技巧和注意事项,需要的朋友参考一下 示例 过滤器允许您将函数应用于变量。此函数可以使用0或1参数。语法如下: 过滤器可以链接在一起,因此非常有效: 如果将其翻译成python,上面的代码行将给出以下内容: 在此示例中,我们将编写一个verbose_name适用于模型(实例或类)或QuerySet的自定义过滤器。它将返回

  • Dorado支持在Client或Server端创建自定义的过滤器并指定过滤器的优先级生成过滤器链路。 Dorado支持全局生效的Filter和单个配置生效的Filter,具体使用方式见下面说明。 1.过滤器接口定义 package com.meituan.dorado.rpc.handler.filter; /** * 过滤器接口, 可自行实现 * * 全局生效Filter,通过SPI配置

  • 本文向大家介绍vue自定义filters过滤器,包括了vue自定义filters过滤器的使用技巧和注意事项,需要的朋友参考一下 官方给出 详情查看 在项目中我们如果有多个filters,那么我怎么一次注册,全局可用,我们在项目里新建一个filters文件夹,如下,index.js是出口文件,readMore是一个对字符串做处理的过滤器 文件目录 下面贴上代码: 然后在main.js里面做如下处理: