【问题标题】:How to set secure flag on cookie programatically如何以编程方式在 cookie 上设置安全标志
【发布时间】:2016-02-03 05:42:16
【问题描述】:

我知道我们可以这样做:

<session-config>
 <cookie-config>
 <secure>true</secure>
 </cookie-config>
</session-config>

但我想要实现的是根据一些配置设置这个标志(真或假)。

我们应该使用过滤器吗?如何使用?

谢谢

【问题讨论】:

    标签: java security servlets cookies servlet-3.0


    【解决方案1】:

    假设您处于 servlet 3.0+ 环境中,并且您不想使用 web.xml 指定 cookie-secure-flag 而是以编程方式设置它:

    实现ServletContextListener 并将其注册到web.xml 或通过注解。
    在其contextInitialized 方法中,从您的配置中评估您的安全标志并将其设置在SessionCookieConfig:

    public void contextInitialized(ServletContextEvent sce) {
         boolean secure = ...
         sce.getServletContext().getSessionCookieConfig().setSecure(secure);
    }
    

    【讨论】:

    • 有没有办法在此方法中检索使用的 http 协议,以便在使用 HTTPS 时设置安全?
    • @kkung 这是一个特定于容器的配置。实际上我不知道在通过 servlet api 初始化上下文期间是否可以使用此信息。
    • @kkung 你有没有找到解决你的问题的方法:在 contextInitialized 方法中检索使用的 http 协议?我需要做同样的事情。
    猜你喜欢
    • 2010-11-29
    • 2018-04-28
    • 2017-09-11
    • 2016-09-11
    • 1970-01-01
    • 2020-01-11
    • 2012-10-13
    • 2018-09-25
    • 2022-01-07
    相关资源
    最近更新 更多