我有一个配置了 Spring Security 的 Web 应用程序来限制对 URL 和方法的访问。我想在默认情况下完全禁用它,并允许我的客户根据需要轻松打开它(他们只能访问“spring-security.xml”)。
我设法关闭了 URL 拦截,但我的方法安全性仍然启用......
有什么线索吗?
(我不想让客户更改我的 web.xml,所以很遗憾每次都修改“global-method-security”设置不是一个选项...)
这是我更新的 spring-security.xml 配置:
<http auto-config='true' use-expressions="true">
<intercept-url pattern="/**" access="permitAll" />
<http-basic />
<anonymous />
</http>
我已经像这样覆盖了 DelegatingFilterProxy.doFilter 方法:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
final String springSecured = System.getProperty("springSecured");
if (StringUtils.isNotBlank(springSecured) && springSecured.equalsIgnoreCase("true")) {
// Call the delegate
super.doFilter(request, response, filterChain);
} else {
// Ignore the DelegatingProxyFilter delegate
filterChain.doFilter(request, response);
}
}
这是我拥有的方法安全性的一个示例:
@RequestMapping(
value = "applications/{applicationName}/timeout/{timeout}",
method = RequestMethod.POST)
public
@ResponseBody
@PreAuthorize("isFullyAuthenticated() and hasPermission(#authGroups, 'deploy')")
Object deployApplication() {
// ...
}