access="permitAll" 和 filters="none" 的区别?

Posted

技术标签:

【中文标题】access="permitAll" 和 filters="none" 的区别?【英文标题】:Difference between access="permitAll" and filters="none"? 【发布时间】:2011-11-15 13:04:16 【问题描述】:

这是 Spring Security 宠物诊所示例的一部分:

<http use-expressions="true">
    <intercept-url pattern="/" access="permitAll"/>
    <intercept-url pattern="/static/**" filters="none" />
    <intercept-url pattern="/**" access="isAuthenticated()" />
    <form-login />
    <logout />
</http>

access="permitAll" 和 filters="none" 有什么区别?

网址: http://static.springsource.org/spring-security/site/petclinic-tutorial.html

【问题讨论】:

【参考方案1】:

区别在于filters = "none" 对指定的 URL 禁用 Spring Security 过滤器,而 access = "permitAll" 配置授权而不禁用过滤器。

在实践中,filters = "none" 可能会在其背后的资源需要 Spring Security 的某些功能时引起问题。例如,您不能将其用于在提交时执行程序登录的用户注册页面 (User Granted Authorities are always : ROLE_ANONYMOUS?)。

【讨论】:

那么我应该使用access = "permitAll"而不是filters = "none",即使是用于安全应用程序的css和js文件? 我也评论了你的链接。 @kamaci:据我了解,filters = "none" 不应该对静态资源造成任何问题。但是,如果您将其用于动态资源,则需要牢记区别。 所以我会使用 filters="none" 来处理静态资源? @kamaci:是的,我认为将filers = "none" 用于静态资源不会造成任何问题。

以上是关于access="permitAll" 和 filters="none" 的区别?的主要内容,如果未能解决你的问题,请参考以下文章

spring security login csrf 失效问题

如何通过在 IIS 8 中使用“Access-Control-Allow-Origin”来允许多个域

如何在access中执行sql语句

DoCmd.OutputTo 方法:为 Access 2003 和 2010 打开的 Excel 格式

401 on request where `permitAll()` 指定

尽管有 .permitAll() 却触发了未经授权的请求