2.11 token验证

        针对CSRF跨站请求伪造,JFinal-layui主要是对添加、修改的业务表单加入token验证机制,这样就可以解决重要业务操作的安全性。我们的拦截是全局验证拦截,在开发功能过程中就是顺手做的事情,简单高效。

1、因为在后端统一对save()、update()进行了token认证拦截,所以在开发添加、修改功能过程中,记得在表单中输出token:#(token)

image.png


2、如果是其他的方法需要用到token认证,首先就要在进入页面的方法调用createToken(),然后在数据提交的方法上面调用@Before(TokenValidator.class),如修改密码表单的token认证实现如下:

  1.         /**
  2.          * 在页面方法创建token
  3.          */
  4.         public void myPassword(){
  5. createToken();
  6. setAttr("userCode",getVisitor().getCode());
  7. render("my/password.html");
  8. }
  9. /**
  10.  * 修改个人密码(验证token)
  11.  */
  12. @Before(TokenValidator.class)
  13. public void updateMypassword(){
  14. Visitor vs=getVisitor();
  15. if(!vs.getCode().equals(getPara("userCode"))){
  16. getResponse().setStatus(403);
  17. renderError(403);
  18. }
  19. String oldPassword=getPara("oldPassword");
  20. String newPassword=getPara("newPassword");
  21. try {
  22.  oldPassword=RSAKit.decryptionToString(oldPassword);
  23.  newPassword=RSAKit.decryptionToString(newPassword);
  24. } catch (Exception e) {
  25. handerException(e);
  26. }
  27. boolean b=service.updatePassword(vs.getCode(), newPassword, oldPassword);
  28. if(b){
  29. setAttr("msg", "密码修改成功");
  30. }else{
  31. createToken();
  32. setException("原密码错误,密码修改失败");
  33. }
  34.  
  35. setAttr("userCode", vs.getCode());
  36. render("my/password.html");
  37. }

最后就是在修改密码页面的form表单输出token:

image.png


顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友
扫描二维码加琴海森林为好友