gpt4 book ai didi

java - Spring Security + 容器管理的身份验证问题

转载 作者:行者123 更新时间:2023-11-30 03:54:09 25 4
gpt4 key购买 nike

我正在使用Spring Security Framework + Spring MVC为了构建一个安全的 Web 应用程序。我的用户的身份验证必须由我的容器处理。我遵循这两个步骤来实现这一目标:

  1. 在我的 web.xml 文件中保护我的整个应用程序:

    <login-config>
    <auth-method>FORM</auth-method>
    </login-config>
    <security-constraint>
    <web-resource-collection>
    <web-resource-name>Public</web-resource-name>
    <description>Matches unconstrained pages</description>
    <url-pattern>/resources/*</url-pattern>
    </web-resource-collection>
    </security-constraint>
    <security-constraint>
    <web-resource-collection>
    <web-resource-name>Secured Areas</web-resource-name>
    <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
    <role-name>Everyone</role-name>
    </auth-constraint>
    </security-constraint>

  2. 使用以下类设置 Spring Security:

    @Configuration
    @EnableWebMvcSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
    http
    .authorizeRequests()
    .antMatchers("/resources/**").permitAll()
    .anyRequest().authenticated()
    .and()
    .jee().mappableRoles("Admin", "User");
    }

    }

此配置似乎有效,因为每当我尝试访问应用程序上下文中除静态资源(在/resources/文件夹中)之外的任何 URL 时,我都必须进行身份验证。然后登录后,将显示正确的 URL 和页面(如预期)。但是,如果我尝试访问另一个链接,则必须重新登录。然后,会显示正确的 URL 和页面,我可以访问任何链接,而无需再次登录。所以,我的问题是:为什么我必须登录两次才能不被要求再次登录?

最佳答案

我并不是这个主题的真正专家,但我发现 session 可能是由容器和 Spring Security 创建的。我的容器身份验证由 WebLogic 处理。有很多谷歌结果展示了如何编写用于预身份验证的自定义过滤器,但它似乎仍然无法正常工作,直到我将 spring security 更改为无状态。

<http auto-config="false" use-expressions="true" disable-url-rewriting="true"
create-session="stateless" entry-point-ref="http403EntryPoint">

关于java - Spring Security + 容器管理的身份验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23684514/

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