在Spring安全应用程序中,如何确定该请求仅来自某个特定域?
在我的spring控制器中有一个向DB插入数据的处理程序,我希望只有当来自xyz.com
的请求被拒绝时才应该从特定域abc.com
调用此处理程序。
我检查THIS,当我这样做时,firefox show The page isn't redirecting properly
这是正确的行为吗?或者是否有其他方式拒绝其他域名请求?
我的应用正在http://localhost:8084/
上运行。
如果我通过access="hasIpAddress('127.0.0.2/8085')
,则显示
09:30:11,426 DEBUG ExceptionTranslationFilter:165 - Access is denied (user is anonymous); redirecting to authentication entry point
org.springframework.security.access.AccessDeniedException: Access is denied
如果我通过access="hasIpAddress('127.0.0.1/8085')
它会抛出
java.lang.ArrayIndexOutOfBoundsException: 4
at org.springframework.security.web.util.IpAddressMatcher.matches(IpAddressMatcher.java:75)
at org.springframework.security.web.util.IpAddressMatcher.matches(IpAddressMatcher.java:43)
at org.springframework.security.web.access.expression.WebSecurityExpressionRoot.hasIpAddress(WebSecurityExpressionRoot.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
答案 0 :(得分:1)
首先,您必须正确使用hasIpAddress。注意,'/'之后的内容不是端口,而是子网。你得到的第二个例外(IndexOutOfBounds)是因为你不应该传递4个项目......
请在此处阅读:http://forum.spring.io/forum/spring-projects/security/95303-how-to-use-hasipaddress