当前位置: 首页 > 面试题库 >

OPTIONS Http方法禁用Spring Security

上官羽
2023-03-14
问题内容

是否可以为某种HTTP方法禁用Spring Security?

我们有一个Spring REST应用程序,其服务需要在HTTP请求的标头中附加授权令牌。我正在为此编写一个JShtml" target="_blank">客户端,并使用JQuery发送GET / POST请求。该应用程序使用此过滤器代码启用了CORS。

doFilter(....) {

  HttpServletResponse httpResp = (HttpServletResponse) response;
  httpResp.setHeader("Access-Control-Allow-Origin", "*");
  httpResp.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
  httpResp.setHeader("Access-Control-Max-Age", "3600");
  Enumeration<String> headersEnum = ((HttpServletRequest) request).getHeaders("Access-Control-Request-Headers");
  StringBuilder headers = new StringBuilder();
  String delim = "";
  while (headersEnum.hasMoreElements()) {
    headers.append(delim).append(headersEnum.nextElement());
    delim = ", ";
  }
  httpResp.setHeader("Access-Control-Allow-Headers", headers.toString());
}

但是,当JQuery发送针对CORS的OPTIONS请求时,服务器将使用授权失败令牌进行响应。显然,OPTIONS请求缺少授权令牌。那么有可能让OPTIONS从Spring Security Configuration逃脱安全层吗?


问题答案:

你试过这个了吗

你可以使用多个元素为不同的URL集定义不同的访问要求,但是将按照列出的顺序评估它们,并且将使用第一个匹配项。因此,你必须将最具体的匹配项放在顶部。你还可以添加方法属性以将匹配限制为特定的HTTP方法(GET,POST,PUT等)。

<http auto-config="true">
    <intercept-url pattern="/client/edit" access="isAuthenticated" method="GET" />
    <intercept-url pattern="/client/edit" access="hasRole('EDITOR')" method="POST" />
</http>

以上意味着你需要选择要拦截的url模式以及所需的方法



 类似资料:
  • 行动时刻 - 禁用未使用的EAP方法 我们的组织决定支持两种隧道式EAP方法(PEAP和EAP-TTLS)。 我们将禁用其他方法并将默认EAP方法设置为PEAP: 编辑位于FreeRADIUS配置目录下的eap.conf文件。 通过完全注释掉它们来禁用以下方法:md5,leap,gtc和mschapv2。 更改default_eap_type指令: default_eap_type = md5 更

  • 本文向大家介绍Java禁止使用finalize方法,包括了Java禁止使用finalize方法的使用技巧和注意事项,需要的朋友参考一下 什么是finalize方法 finalize()方法被定义在Java.lang.Object类中,意味着所有的类都可以重载这个方法。java垃圾回收器只之道释放那些经由new分配的内存,所以如果你的对象并非通过new获得的内存,那么垃圾回收器就不知道如何释放该对象

  • 本文向大家介绍spring-boot 禁用swagger的方法,包括了spring-boot 禁用swagger的方法的使用技巧和注意事项,需要的朋友参考一下 在使用spring-boot开发的时候,我们很多时候会使用swagger作为api文档输出。可以在UI界面上看到api的路径,参数等等。 当然,作为开发环境是很方便的,但是上生产环境的时候,我们需要把swagger禁掉。怎么通过配置文件的方

  •       在使用E立方管理平台时,有时会有E立方管理平台在EXCEL中没有显示的情况。这是由于EXCEL将E立方管理平台禁用造成的,需要在禁用项目中启用,就可以正常使用了。       下边分别介绍了 Excel2003、 Excel2007、 Excel2010及以上版本的启用方法 一、 Excel2003的启用方法 帮助-->关于,点击 禁用项目,如果有禁用项目,选中并启用,然后关闭Exce

  • 在我的应用程序中,我有两个bean,它们的方法用注释注释。有时我需要调度两个方法,有时我需要根据应用程序的输入参数调度其中一个。加载@scheduled方法后,如何禁用它?我使用的是Spring3.1。

  • 本文向大家介绍DevExpress实现禁用TreeListNode CheckBox的方法,包括了DevExpress实现禁用TreeListNode CheckBox的方法的使用技巧和注意事项,需要的朋友参考一下 很多时候在进行C#项目的实际开发中,会需要根据条件来设置节点不可勾选,查看DevExpress文档发现通过其CustomDrawNodeCheckBox和BeforeCheckNode