我有一个带有方法签名的DWR操作,如下所示:
String joinGroup(String groupId, String groupName);
这是通过DWR AJAX请求调用的,并且工作正常。
但是,我正在尝试编写一个Spring拦截器(与ServletFilter非常相似),在调用DWR操作之前进行一些身份验证工作。
拦截器被正确调用,但我需要访问拦截器中的groupId和groupName数据。
请求参数映射为空,我已经浏览了调试器中的整个请求属性列表,我无法在任何地方看到数据。
请求的postData也为空。
使用firebug我可以看到数据正在传递给服务器(当最终调用joinGroup方法时它就在那里)。
我似乎无法在我的拦截器中访问它。
我有什么方法可以访问它吗?
答案 0 :(得分:2)
使用org.directwebremoting.AjaxFilter
每次在针对此过滤器配置的方法上发出Ajax请求时,DWR都会调用AjaxFilter的doFilter方法。传入此方法的AjaxFilterChain允许过滤器将方法详细信息传递给链中的下一个实体。
通常,该方法将执行以下操作:
答案 1 :(得分:1)
我会假设您使用 MethodInterceptor ,只有在上述方法中才会调用它(意味着您的配置正确)。
...
@Override
public Object invoke(MethodInvocation inv) throws Thorwable {
Object[] args = inv.getArguments();
String groupId = args[0];
String groupName = args[1];
.... if user has access call inv.proceed, else throw AccessDeniedException
}
Spring Framework中的MethodInterceptor 与Spring Security中的 MethodSecurityInterceptor 完全相同。