Auth.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace app\http\middleware;
  3. use app\hander\HelpHander;
  4. use think\Db;
  5. class Auth
  6. {
  7. public function handle($request, \Closure $next)
  8. {
  9. $token = $request->param('token');
  10. $userId = $request->param('userId');
  11. if(empty($token) || empty($userId)){
  12. HelpHander::error('登录信息已失效,请重新登录',-100);
  13. }
  14. $arr = explode("9", $token);
  15. if (empty($arr)||count($arr)!=2) {
  16. HelpHander::error('登录信息失效,请重新登录',-100);
  17. }
  18. //八进制转十进制
  19. $userid = octdec($arr[0]);
  20. if (empty($userid)) {
  21. HelpHander::error('登录信息失效,请重新登录',-100);
  22. }
  23. if($userId != $userid){
  24. HelpHander::error('登录信息失效,请重新登录',-100);
  25. }
  26. $ret = Db::name('token')
  27. ->where('token',$token)
  28. ->value('user_id');
  29. if(!$ret){
  30. HelpHander::error('登录信息失效,请重新登录',-100);
  31. }
  32. if($userId != $ret){
  33. HelpHander::error('登录信息失效,请重新登录',-100);
  34. }
  35. $tokeninfo = Db::name('token')
  36. ->where('token',$token)
  37. ->where('user_id',$userId)
  38. ->find();
  39. if(!$tokeninfo){
  40. HelpHander::error('登录信息已失效,请重新登录',-100);
  41. }
  42. // 检查用户是否被禁用
  43. $user = Db::name('user')->where('id',$userId)->where('del',0)->where('enable',1)->find();
  44. if(!$user){
  45. HelpHander::error('登录信息已失效,请重新登录',-100);
  46. }
  47. return $next($request);
  48. }
  49. }