gpt4 book ai didi

https - Spring 安全 : How to force https with flag?

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

使用 Spring 安全性,我使用 security:intercept-url 配置需要通过 https 保护的 Web 应用程序部分标签。

例如:

<security:intercept-url pattern="/**/*secure*" requires-channel="https"/>
<security:intercept-url pattern="/**" requires-channel="http" />

这样,所有文件名中带有“secure”的请求或在最低级别包含“secure”的目录都将获得 https,其余的将获得 http。

有没有办法使用标志使Spring强制https?
我无法让任何需要在“?”之后的东西工作。一个网址。
  • http://domain/abc?secure=true => https
  • http://domain/abc => http

  • 然后,Spring 将透明地重定向每个去往 http://domain/abc?secure=true 的请求。至 https://domain/abc?secure=true .

    有没有办法实现这一目标?
    示例中的第一个模式实现了在“?”之前发生“安全”的结果,但我正在寻找一种解决方案/模式在“?”之后有一个标志。只要。

    最佳答案

    让 Spring 考虑“?”之后的片段在 urls 中,stripQueryStringFromUrls 必须设置为 false。

    这是我在 Spring forum 中找到的解决方案:
    加载此 BeanPostProcessor 时,将设置该属性。

    public class BeanPostProcessorImpl implements BeanPostProcessor
    {
    final static private Logger log = Logger.getLogger(BeanPostProcessorImpl.class);

    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException
    {
    return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException
    {
    if (bean instanceof DefaultFilterInvocationSecurityMetadataSource)
    {
    log.info("********* Post-processing " + beanName);
    ((DefaultFilterInvocationSecurityMetadataSource) bean).setStripQueryStringFromUrls(false);
    }
    return bean;
    }
    }

    这种方式模式

    <security:intercept-url pattern="/**/*?secure=true*" requires-channel="https"/>

    终于工作了。

    关于https - Spring 安全 : How to force https with flag?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6441523/

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