拒绝访问某些网址

时间:2014-02-19 07:16:17

标签: spring-mvc spring-security

我想在我的春季网络应用程序中阻止访问某些网址。我做了一些研究并遇到了“标题”。我不知道如何使用它们。任何帮助将受到高度赞赏。提前致谢。

2 个答案:

答案 0 :(得分:0)

我能想到的最简单的方法之一就是拥有一个预先定义的被阻止网址列表,并在您重写的requiresAuthentication()方法中检查此列表中的请求网址实施AbstractAuthenticationProcessingFilter

@Override    
protected boolean requiresAuthentication(final HttpServletRequest request, final HttpServletResponse response) {
         List<String> blockedUrls = new Arraylist<>();
         list.add("/foo/");
         if(blockedUrls.contains(request.getRequestURI())) {
             // go to blocked error page
         } else {
             // process the request normally
         }
    }

Shishir

答案 1 :(得分:0)

您的弹簧安全性如何配置?你能告诉我们代码/ xml吗?

假设您已使用webapp配置了spring-security,则很容易限制URL(包括基于角色的限制)。

<http auto-config="true" use-expressions="true">
    <intercept-url pattern="/restricted/**" access="isAuthenticated()" />
    <intercept-url pattern="/**" access="permitAll" />
    <form-login login-processing-url="/loginProcess" 
                login-page="/" 
                authentication-failure-url="/?loginFailure=true"/>
    <logout logout-url="/static/j_spring_security_logout"/>
</http>

intercept-url元素定义了URL模式以及是否有人/每个人都可以访问该模式。 Spring将从顶部匹配,因此最具体的身份验证应位于列表的顶部。此外,在上面的示例中,由于最终条目与所有URL匹配,这意味着其他URL模式中未指定的任何内容都将打开。

摘自本文 - 它还展示了如何使用代码配置而不是在xml中实现相同的功能:http://automateddeveloper.blogspot.co.uk/2014/02/spring-4-xml-to-annotation-configuration.html