CheckAllow.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace app\api\middleware;
  3. use think\Request;
  4. use think\facade\Cache;
  5. class CheckAllow
  6. {
  7. /*
  8. * 中间件验证redis中ip和token
  9. */
  10. protected $request;
  11. public function handle($request, \Closure $next)
  12. {
  13. // 1.拿到token
  14. $data = $request->param();
  15. // 2.获取ip
  16. $ip= $request->ip();
  17. $iip = @file_get_contents("https://opendata.baidu.com/api.php?query=".$ip."&co=&resource_id=6006&oe=utf8");
  18. $iip = json_decode($iip,true);
  19. // 3.获取redis缓存token
  20. $token1 = Cache::store('redis')->get($ip);
  21. if($token1){
  22. // 存在该token,比对
  23. if($token1!=$data['token']){
  24. return json('非法请求!');
  25. }else{
  26. /*if($iip["status"]=="0"){
  27. if (explode("省",$iip["data"][0]["location"])[0]!="安徽") {
  28. if ($ip!="121.41.26.116"&$ip!="47.114.151.35"&$ip!="116.62.247.203") {
  29. return json('非法请求!');
  30. }else{
  31. // 存在且相同,下一步请求
  32. return $next($request);
  33. }
  34. }else{
  35. return $next($request);
  36. }
  37. }else{
  38. return $next($request);
  39. }*/
  40. return $next($request);
  41. }
  42. }else{
  43. return json('非法请求!');
  44. }
  45. }
  46. }