tomcat - Spring 安全上下文路径解析器

标签 tomcat grails spring-security

我想定义从 spring security 设置的 session cookie 的路径,以允许从 web 应用程序进行多次登录。例如:

http://localhost:8080/myApp/context1/login
http://localhost:8080/myApp/context2/login
http://localhost:8080/myApp/context3/login
...

基本上,这可以通过覆盖 LoginUrlAuthenticationEntryPointSimpleUrlAuthenticationFailureHandlerSimpleUrlAuthenticationSuccessHandlerSimpleUrlLogoutSuccessHandler 来实现。但是我找不到负责设置 cookie 上下文路径的处理程序,我需要从以下位置覆盖它:

/myApp

适当的等价物:

/myApp/context1

这是必需的,以允许并行登录到这些应用程序。

问:如何为tomcat动态改变session cookie(HttpSession)的cookie路径?

最佳答案

您的应用程序容器负责向客户端发送 session cookie。 在 Spring Security 代码中,您只会看到这样的行:

HttpSession session = request.getSession();

Spring Security 源代码中没有 session cookie 创建逻辑。这就是为什么没有用于实现的接口(interface)或用于提供自定义路径的配置属性的原因。

要指定将分配给您的网络应用程序创建的任何 session cookie 的路径,您可以放置​​:

<web-app>
    <session-config>
        <cookie-config>
            <path></path>
        </cookie-config>
    </session-config>
</web-app>

在您的 web.xml 描述符中。

但是您希望在一个 Web 应用程序中有多个 session 。 为什么不为每个用户上下文部署新的应用程序?这是最合乎逻辑的方法。

编辑: 恐怕您想实现一些无需修补 session 即可轻松完成的事情。您的问题看起来更像是授权而不是身份验证。也许您需要为每个上下文使用角色?还是访问控制列表?

关于tomcat - Spring 安全上下文路径解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13659734/

相关文章:

java - 由 : org. apache.maven.plugin.PluginContainerException 引起:

grails - 使用Grails Fields插件增加f:field(输入)的大小(但不丢失DRY)

grails - Grails域验证器

spring - isAuthenticated 和 isFullyAuthenticated 之间的区别

java - <jsp :attribute> 内的 jsp 打印变量

非 root 用户无法读取在 linux 上具有文件写入/输出的 JAVA 应用程序

session - Tomcat 非粘性 session 与 redisson

javascript - d3.geomap在Grails应用程序中未定义

spring-boot - 为 facebook 实现PrincipalExtractor(带社交的 Spring Boot)

java - 使用带有 hdbc 的 spring security 3.0 逐步登录示例