【发布时间】:2012-07-05 14:06:16
【问题描述】:
我有一个使用 Spring 的 REST API。我创建了一个拦截器:
@Component
public class CSRFInterceptor extends HandlerInterceptorAdapter {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// code here
return true;
}
}
发出的每个请求都使用带有以下相应 Java 类的 JSON:
public class CSRFTokenContainer<T> {
private T data;
private String csrf;
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public String getCsrf() {
return csrf;
}
public void setCsrf(String csrf) {
this.csrf = csrf;
}
}
在我的控制器中,使用例如:
@Controller
@RequestMapping("/persons")
public class PersonController {
@RequestMapping(method=RequestMethod.POST)
public @ResponseBody String create(@RequestBody CSRFTokenContainer<Person> account, HttpServletResponse response) {
// do something
return "test";
}
}
现在我想做以下事情:控制器应该只接收没有 CSRF 令牌的 Person 对象。 CSRF 令牌应该在拦截器内部进行处理。我怎样才能做到这一点?我认为主要问题是,我不知道如何在 Interceptor 中获取我的 CSRFTokenContainer 对象。之后我想将请求修改为仅包含“数据”部分。
一些代码示例会很好。
谢谢!
【问题讨论】:
-
请接受您之前的一些问题
标签: json spring spring-mvc interceptor