【问题标题】:Failed to create a session, as response has been committed未能创建会话,因为已提交响应
【发布时间】:2015-07-20 14:59:19
【问题描述】:

在我的 Web 应用程序中,我为用户提供表单登录和用于服务器到服务器 API 调用的基本身份验证。基本身份验证流程是无状态的,但表单登录不是。 当有人使用基本身份验证请求 API 时,我在日志中收到以下警告

Failed to create a session, as response has been committed. 

经过一些研究,我发现很少有主题建议使用 NullSecurityContextRepository 或设置 <http create-session='never' /> 我不能使用这些解决方案,因为它会破坏表单登录流程。

如何仅在基本身份验证流程中禁用会话创建?

谢谢

【问题讨论】:

    标签: java spring spring-security


    【解决方案1】:

    从 Spring Security 3.1 开始,您可以配置 multiple <http> 元素以区别保护 URL 模式。这应该允许您为不同的 http 元素制定不同的会话创建策略。

    请查看以上链接,其中涉及多个 http 元素的命名空间配置,针对不同的 ant-patterns 使用表单和 http-basic 身份验证。希望这可以帮助! :)

    【讨论】:

    • 感谢您的回答。不幸的是,我不能使用这个解决方案,因为我必须支持相同的 url 模式,同时使用基本身份验证和表单身份验证。
    • 您的完整用例是什么?您如何区分正常请求和 API 调用?您还可以根据他们使用的 http 方法来处理您的请求。请提供一些关于您的问题的见解,然后我或社区中的其他任何人都可以更好地帮助您。
    猜你喜欢
    • 2012-06-12
    • 2012-06-06
    • 2013-05-29
    • 2021-09-24
    • 1970-01-01
    • 2014-12-08
    • 2013-12-02
    • 2012-01-15
    相关资源
    最近更新 更多