CsrfMiddleware.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | EasyAdmin
  4. // +----------------------------------------------------------------------
  5. // | PHP交流群: 763822524
  6. // +----------------------------------------------------------------------
  7. // | 开源协议 https://mit-license.org
  8. // +----------------------------------------------------------------------
  9. // | github开源项目:https://github.com/zhongshaofa/EasyAdmin
  10. // +----------------------------------------------------------------------
  11. namespace app\admin\middleware;
  12. use app\Request;
  13. use CsrfVerify\drive\ThinkphpCache;
  14. use CsrfVerify\entity\CsrfVerifyEntity;
  15. use CsrfVerify\interfaces\CsrfVerifyInterface;
  16. use think\facade\Session;
  17. class CsrfMiddleware
  18. {
  19. use \app\common\traits\JumpTrait;
  20. public function handle(Request $request, \Closure $next)
  21. {
  22. if (env('EASYADMIN.IS_CSRF', true)) {
  23. if (!in_array($request->method(), ['GET', 'HEAD', 'OPTIONS'])) {
  24. // 跨域校验
  25. $refererUrl = $request->header('REFERER', null);
  26. // $refererInfo = parse_url($refererUrl);
  27. // $host = $request->host(true);
  28. // if (!isset($refererInfo['host']) || $refererInfo['host'] != $host) {
  29. // $this->error('当前请求不合法!1');
  30. // }
  31. //
  32. // // CSRF校验
  33. // // @todo 兼容CK编辑器上传功能
  34. // $ckCsrfToken = $request->post('ckCsrfToken', null);
  35. // $data = !empty($ckCsrfToken) ? ['__token__' => $ckCsrfToken] : [];
  36. //
  37. // $check = $request->checkToken('__token__', $data);
  38. // if (!$check) {
  39. // $this->error('请求验证失败,请重新刷新页面!');
  40. // }
  41. }
  42. }
  43. return $next($request);
  44. }
  45. }