LoginCheck.php 2.7 KB

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