我只允许来自本地主机的特定URL模式请求。到目前为止,我已经尝试过:
<sec:intercept-url pattern="/blabla/**" access="hasIpAddress('127.0.0.1')" />
但是这不起作用,并且我在日志输出中得到以下语句:
Access is denied (user is anonymous); redirecting to authentication entry point
所以我的问题是,如何只允许来自本地主机的匿名用户访问?
答案 0 :(得分:2)
看看HttpSecurity::anonymous
方法如何启用和提供匿名认证的AnonymousConfigurer<H extends HttpSecurityBuilder<H>>
配置。
在您的Spring Security配置类中,应该有一个覆盖方法:
@Override
public void configure(HttpSecurity http) throws Exception {
http.and()
.anonymous()... // enables and configures the anonymous access
.and()
.authorizeRequests()...
答案 1 :(得分:2)
是否可以在基于XML的配置中表达此and()关系?
根据下面https://docs.spring.io/spring-security/site/docs/3.0.x/reference/el-access.html处的文档,应该可以使用。
在这里,我们定义了应用程序的“ blabla”区域(由URL模式定义)仅应用于IP地址与127.0.0.1匹配的匿名用户。
<sec:intercept-url pattern="/blabla/**"
access="isAnonymous() and hasIpAddress('127.0.0.1')"/>
答案 2 :(得分:1)
我最终使用了以下内容:
http.authorizeRequests()
// restrict all requests unless coming from localhost IP4 or IP6
.antMatchers("/**").access("hasIpAddress(\"127.0.0.1\") or hasIpAddress(\"::1\")")
我只尝试使用hasIpAddress("127.0.0.1")
进行操作,如果我将该IP放在浏览器的url中可以正常工作,但是它不能与localhost
作为别名请求它一起使用。