Spring安全性 - 通过针对@RequestParam参数验证原则来保护请求?

时间:2014-06-18 06:10:34

标签: java spring spring-mvc spring-security spring-el

我使用Spring 3.1.2使用Restful API(包含许多URL),并且希望对每个请求应用安全过滤器,该请求使用来自经过身份验证的用户的数据" principal"以及请求发送的数据。

示例:

从请求网址验证accountId:

http://www.foo.com/accountRecords?accountId=23

主要数据principal.accountId = 23

我知道这可以在@requestMapping方法中完成,但想要在外面实际方法中完成,因此它可以维护和配置,而不会干扰业务逻辑。

但我没有找到任何关于它的建议和样本..

我认为它看起来像: @PreAuthorize("principal.accountId == requestParam.accountId")

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找过滤器来过滤请求和响应。在Spring中,您可以使用interceptors来实现此目的。

public class MyInterceptor extends HandlerInterceptorAdapter {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession(false);
        String requestParam = request.getParameter("your request param");
    }
}

最后,您需要在context.xml文件中配置这些拦截器:

<mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.example.MyInterceptor" />
        </mvc:interceptor>                
    </mvc:interceptors>