gpt4 book ai didi

java - 如何在没有登录页面的情况下使用简单的 Spring Security AuthenticationProvider?

转载 作者:行者123 更新时间:2023-12-02 00:12:38 24 4
gpt4 key购买 nike

我有一个简单的身份验证提供程序,我正在尝试将其与 Spring Security 一起使用。

<security:http auto-config="true" use-expressions="true">
<security:intercept-url pattern="/**" access="isAuthenticated()" />
</security:http>
<security:authentication-manager>
<security:authentication-provider
ref="ipAddressAuthenticationProvider" />
</security:authentication-manager>

目前,通过上述配置,用户第一次访问时会被重定向到登录页面。我不想要这个重定向。我试图在每次访问页面时都点击此身份验证提供程序。有什么方法可以在不编写额外的自定义代码的情况下完成这项工作吗?

我猜我需要以某种方式彻底摆脱表单过滤器和基本过滤器。

结果

我使用下面的配置可以正常工作。我必须扩展 AbstractPreAuthenticatedProcessingFilter 并为其两个抽象方法简单地 返回 "";

<security:http use-expressions="true" entry-point-ref="http403ForbiddenEntryPoint">
<security:intercept-url pattern="/**" access="isAuthenticated()" />
<security:custom-filter position="PRE_AUTH_FILTER" ref="preAuthFilter" />
</security:http>
<bean id="preAuthFilter" class="com.hercules.ratinggame.business.security.IpAddressPreAuthenticationFilter">
<property name="authenticationManager" ref="authenticationManager"/>
</bean>
<bean id="http403ForbiddenEntryPoint" class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint"/>
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider
ref="ipAddressAuthenticationProvider" />
</security:authentication-manager>

最佳答案

目前您使用auto-config="true"这意味着你得到 few filters configured iunder the hood ,包括<form-login>元素为 UsernamePasswordAuthenticationFilter筛选。

此外,要在每个页面访问时都点击此身份验证提供程序,您需要一个可以从请求(据我所知的 IP 地址)获取数据的过滤器。过滤器可能是 RequestHeaderAuthenticationFilter 或者更有可能your own AbstractPreAuthenticatedProcessingFilter implementation它将有权访问您的身份验证管理器。

总而言之,配置如下:

<security:http use-expressions="true">
<security:intercept-url pattern="/**" access="isAuthenticated()" />
<security:logout /> <!-- optional -->
<security:custom-filter position="PRE_AUTH_FILTER"
ref="ipFromRequestPreAuthenticationFilter" />
</security:http>

<!-- this will probably extend AbstractPreAuthenticatedProcessingFilter -->
<bean id="ipFromRequestPreAuthenticationFilter"
class="com.example.IpFromRequestPreAuthenticationFilter">
<property name="authenticationManager" ref="authenticationManager" />
</bean>

<security:authentication-manager alias="authenticationManager">
<security:authentication-provider ref="ipAddressAuthenticationProvider" />
</security:authentication-manager>

关于java - 如何在没有登录页面的情况下使用简单的 Spring Security AuthenticationProvider?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com