Struts2 获取操作中的令牌值

Struts2 获取操作中的令牌值,struts2,Struts2,我在Struts 2中使用令牌来防止跨站点请求伪造(CSRF) 如果我在JSP页面中添加令牌,它将生成如下HTML代码: <input type="hidden" value="token" name="struts.token.name"> <input type="hidden" value="6AM02LV6P4R9UR5P3LOI62XG87SEQYIT" name="token"> 我想在提交表单时在操作中获得令牌值?我怎样才能得到它?试试这个: St

我在Struts 2中使用令牌来防止跨站点请求伪造(CSRF)

如果我在JSP页面中添加令牌,它将生成如下HTML代码:

 <input type="hidden" value="token" name="struts.token.name">
 <input type="hidden" value="6AM02LV6P4R9UR5P3LOI62XG87SEQYIT" name="token">

我想在提交表单时在操作中获得令牌值?我怎样才能得到它?

试试这个:


String-tokenName=TokenHelper.getTokenName();
字符串tokenVal=TokenHelper.getToken();
System.out.println(“tokenName:+tokenName+”tokenVal:+tokenVal);

如果您询问如何从客户端向操作发送令牌值以确保这不是CSRF,您可以通过表单提交发送,或者将令牌添加到请求参数中

选项1) 只有在jsp页面中使用s:form元素时,这才有效。将标记包含到s:form元素中。这将确保您的表单与生成的令牌一起提交

<s:form action="ProcessSimpleLogin">
   <s:textfield name="username" label="Username" />
   <s:password name="password" label="Password" />
   <s:token />
   <s:submit value="Login" />
</s:form>
这将生成一个参数字符串,类似于:

http://localhost:2000/namespace/action?username=denise&struts.token.name=token&token=6AM02LV6P4R9UR5P3LOI62XG87SEQYIT
您的请求将被TokenInterceptor拦截,如果给定的令牌等于会话中存储的令牌,它将执行该操作。请记住,不能使用同一令牌两次处理请求。实际上,令牌拦截器将在使用令牌变量后将其从会话参数中删除。若要运行另一个请求,必须确保在服务器端生成了新令牌


希望这对你有用

String tokenName=TokenHelper.getTokenName();字符串token=TokenHelper.getToken(tokenName);
    paramString = paramString + "&struts.token.name=token";
    paramString = paramString + "&token=" + strutsToken;
http://localhost:2000/namespace/action?username=denise&struts.token.name=token&token=6AM02LV6P4R9UR5P3LOI62XG87SEQYIT