Google Web Toolkit - XSRF受保护的服务:无效的RPC令牌

时间:2014-02-28 21:40:57

标签: gwt csrf

我在GWT项目中实施了XSRF保护服务。我正在使用GWT 2.6.0版本。当我尝试在浏览器中加载我的应用程序时,我得到一个非常奇怪的例外,如下所示:

未捕获的com.google.gwt.user.client.rpc.RpcTokenException:无效的RPC令牌(无效的RpcToken类型:预期' com.google.gwt.user.client.rpc.XsrfToken'但得到了& #39; class com.google.gwt.user.client.rpc.XsrfToken')

我搜索了我的类路径,我只有一个位于我的WAR文件中的gwt-servlet.jar提供的XsrfToken类。我从GIT下载了2.6代码,我看到抛出异常的代码由ProxyCreator.java在方法generateCheckRpcTokenTypeOverride中提供。

有没有人知道为什么会抛出这个异常。该错误至少向我表明它应该通过,因为预期的是它有什么。

我为了完整性而粘贴了该方法:

protected void generateCheckRpcTokenTypeOverride(SourceWriter srcWriter, TypeOracle typeOracle, SerializableTypeOracle typesSentFromBrowser) { JClassType rpcTokenType = typeOracle.findType(RpcToken.class.getName()); JClassType[] rpcTokenSubtypes = rpcTokenType.getSubtypes(); String rpcTokenImplementation = ""; for (JClassType rpcTokenSubtype : rpcTokenSubtypes) { if (typesSentFromBrowser.isSerializable(rpcTokenSubtype)) { if (rpcTokenImplementation.length() > 0) { // >1 implematation of RpcToken, bail rpcTokenImplementation = ""; break; } else { rpcTokenImplementation = rpcTokenSubtype.getQualifiedSourceName(); } } } if (rpcTokenImplementation.length() > 0) { srcWriter.println("@Override"); srcWriter.println("protected void checkRpcTokenType(RpcToken token) {"); srcWriter.indent(); srcWriter.println("if (!(token instanceof " + rpcTokenImplementation + ")) {"); srcWriter.indent(); srcWriter.println("throw new RpcTokenException(\"Invalid RpcToken type: " + "expected '" + rpcTokenImplementation + "' but got '\" + " + "token.getClass() + \"'\");"); srcWriter.outdent(); srcWriter.println("}"); srcWriter.outdent(); srcWriter.println("}"); } }

非常感谢。

0 个答案:

没有答案