【发布时间】:2015-04-17 10:37:32
【问题描述】:
我有
<security:http use-expressions="true">
<security:intercept-url pattern="/**/*" access="hasRole('ROLE_USER')"/>
在 Spring Security 上下文配置文件中和
@PreAuthorize("permitAll")
@RequestMapping("/public")
public String aMethod() {
// ...
}
在控制器中。
我想要的是除public 之外的所有URL 都需要身份验证。这可能吗?
【问题讨论】:
-
那行不通。您定义的
/**/*全局模式。意味着一切都应该有ROLE_USER,然后你正在尝试/public,这与/**混淆。为什么不定义两种模式。 -
我想要实现的是保护所有 URL,除非在 @PreAuthorize 注释中另有说明。我应该如何定义这两种模式来实现这一点?
-
一旦你在 XML 全局路径级别定义了一些东西,那么它甚至不会达到 @PreAuthorize("permitAll") 方法级别。我建议把它分开。类似于 - `
和 ``. -
已验证,它不起作用,也不应该起作用。
-
因此,XML 中的 intercept-url 优先于注解。请将此作为答案,我会接受。但是,如果 URL 不被任何拦截 URL 或任何 @PreAuthorize 注释匹配,是否可以定义默认行为?
标签: spring-security spring-annotations