如何在Spring Security MVC中编写简单的过滤器?

时间:2013-12-13 14:22:53

标签: java spring spring-mvc spring-security

我正在研究在Spring 3.2中编写的简单REST API原型。我已经阅读了互联网上的Spring Security文档和许多教程,但对我来说如何保护我的REST API没有任何意义。

我的要求非常简单 - 根据HTTP标头中的一个参数的值,我需要允许或禁止客户端使用特定资源。我有一个可以作为bean注入的服务,这个bean可以为我处理这个任务。我需要知道的是哪里放置这个“check”bean和如何告诉Spring在资源被消耗之前将它用作过滤器(我配置我的应用程序)以编程方式通过Java类,我不使用applicationContext.xml)。

我会很感激一些简单的例子 - Spring配置和过滤器类。

1 个答案:

答案 0 :(得分:1)

巴特说,你可以很好地利用拦截器。你可以这样做

     @Component
        public class SecurityFilter extends HandlerInterceptorAdapter{

            @Override
            public boolean preHandle(HttpServletRequest request,
                    HttpServletResponse response, Object handler) throws Exception {
                    /*you can do this way. set the response content type as 
                    * 'application/json'.get the PrintWriter from response and print
                    * the Json object
                    */
                     response.setContentType("application/json");
                    PrintWriter out = response.getWriter();
                    /*jsonObject can be either be a String form of json. example:
                    *"{ key1:'value1', key2: 'value2' }" or JSON object created
                    *using JSON libraries like json.org or Gson package
                    */
                    out.print(jsonObject);
                    out.flush();
                return false;
            }

        }

您还必须在弹簧配置文件中进行配置。

    <mvc:interceptors>
            <mvc:interceptor>
               <!-- map the url path to the appropriate filter -->
                <mvc:mapping path="/**" />
                <bean class="com.keerthi.filter.SecurityFilter" />
            </mvc:interceptor>
        </mvc:interceptors>

请阅读HandlerInterceptorAdapter API的文档。这将有助于你