LoginCheck.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace App\Module\AppGame\Middleware;
  3. use App\Module\AppGame\Handler\BaseHandler;
  4. use App\Module\AppGame\SessionApp;
  5. use App\Module\AppGame\Tools\Protobuf;
  6. use Closure;
  7. use Illuminate\Http\Request;
  8. use UCore\Helper\Logger;
  9. use Uraus\Kku\Common\RESPONSE_CODE;
  10. use Uraus\Kku\Response;
  11. class LoginCheck
  12. {
  13. /**
  14. * Handle an incoming request.
  15. *
  16. * @param \Illuminate\Http\Request $request
  17. * @param \Closure $next
  18. * @return mixed
  19. */
  20. public function handle(Request $request, Closure $next)
  21. {
  22. // return $next($request);
  23. // 获取当前请求的Handler类
  24. /**
  25. * @var BaseHandler $handler
  26. */
  27. $handler = $request->attributes->get('_handler');
  28. $need_login = false;
  29. if ($handler && method_exists($handler, 'needLogin') && $handler->needLogin()) {
  30. // 检查是否已登录
  31. $need_login = true;
  32. }
  33. $login_ok = false;
  34. // 需要登陆,进行登陆判断
  35. $token = $request->header('token', '');
  36. Logger::debug('LoginCheck:' . $token . $need_login);
  37. // dump($token);
  38. if (get_class($handler) == 'App\Module\AppGame\Handler\Public\TokenUsefulHandler') {
  39. SessionApp::$session_id = $token;
  40. return $next($request);
  41. }
  42. if (get_class($handler) == 'App\Module\AppGame\Handler\Public\TokenHandler') {
  43. SessionApp::$session_id = SessionApp::genSessionID();
  44. return $next($request);
  45. }
  46. if (empty($token)) {
  47. // token 不合法
  48. $response = new Response();
  49. $response->setCode(RESPONSE_CODE::REQUEST_ERROR);
  50. $response->setMsg('请求错误-Token is import!');
  51. return \App\Module\AppGame\Tools\Protobuf::response($response);
  52. } else {
  53. // token 不为空
  54. if (!SessionApp::checktoken($token)) {
  55. // token 不合法
  56. $response = new Response();
  57. $response->setCode(RESPONSE_CODE::REQUEST_ERROR);
  58. $response->setMsg('请求错误-Token');
  59. return Protobuf::response($response);
  60. }
  61. SessionApp::$session_id = $token;
  62. // 登陆判断
  63. $uid = \App\Module\AppGame\SessionApp::getUserId();
  64. // dump($uid);
  65. if ($uid > 0) {
  66. $handler->user_id = $uid;
  67. $login_ok = true;
  68. }
  69. }
  70. if ($need_login && !$login_ok) {
  71. $response = new Response();
  72. $response->setCode(RESPONSE_CODE::NOT_LOGIN);
  73. $response->setMsg('用户未登录');
  74. return Protobuf::response($response);
  75. }
  76. return $next($request);
  77. }
  78. }