gpt4 book ai didi

java - 不同url的不同认证方式

转载 作者:行者123 更新时间:2023-12-04 05:24:22 25 4
gpt4 key购买 nike

我在我的应用程序中使用 spring-security (3.0.5.RELEASE)。该应用程序为用户托管了一个 api 和一些受限的访问权限,我想使用 spring-security 在应用程序的双方进行身份验证。

  • Api 位于 mydomain/api/*
  • 用户受限访问位于 mydomain/restricted/*

  • Api 身份验证必须通过某种 api_key 完成

    用户访问认证是通过登录表单完成的

    第一个问题是:这可能吗?
    如果是,我该怎么做?我在互联网上阅读了很多东西,但我不知道该怎么做(除非升级到 spring 3.1 ...)

    欢迎任何帮助......

    问候

    最佳答案

    升级到 Spring Security 3.1 确实是彻底做到这一点的最佳方式。如果你不能这样做,你仍然可以达到预期的结果,但它不会那么漂亮。如果您的资源在 URL 空间中完全分离(就像它们看起来一样),您可以添加第二个 Spring Security 过滤器,仅覆盖/api 资源,并确保它在默认资源之前应用。要在 Spring Security 3.0 中分离配置,您需要为第二个过滤器提供一个单独的应用程序上下文,并将过滤器配置为在众所周知的地方找到它 - 例如DispatcherServlet 创建一个上下文并将其存储在 servlet 上下文中与其名称相关的属性中(以下示例中的“api”):

    <filter>
    <filter-name>apiSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
    <param-name>contextAttribute</param-name>
    <param-value>org.springframework.web.servlet.FrameworkServlet.CONTEXT.api</param-value>
    </init-param>
    </filter>

    <filter-mapping>
    <filter-name>apiSecurityFilterChain</filter-name>
    <url-pattern>/api/*</url-pattern>
    </filter-mapping>

    <servlet>
    <servlet-name>api</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>

    此示例中的调度程序 servlet 在 /WEB-INF/api-servlet.xml 处有一个应用程序上下文。其中包含一个带有 id="apiSecurityFilter" 的 Spring Security 过滤器链.

    关于java - 不同url的不同认证方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13365400/

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