isSecurity.php 1000 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. namespace App\Http\Middleware;
  3. use App\Components\Helpers;
  4. use Cache;
  5. use Closure;
  6. use Log;
  7. class isSecurity
  8. {
  9. /**
  10. * 是否需要安全码才访问(仅用于登录页)
  11. *
  12. * @param $request
  13. * @param Closure $next
  14. *
  15. * @return mixed
  16. */
  17. public function handle($request, Closure $next)
  18. {
  19. $ip = getClientIP();
  20. $code = $request->input('securityCode');
  21. $cacheKey = 'SecurityLogin_'.ip2long($ip);
  22. $websiteSecurityCode = Helpers::systemConfig()['website_security_code'];
  23. if($websiteSecurityCode && !Cache::has($cacheKey)){
  24. if($code != $websiteSecurityCode){
  25. Log::info("拒绝非安全入口访问(".$ip.")");
  26. return response()->view('auth.error', ['message' => trans('error.SecurityError').', '.trans('error.Visit').'<a href="/login?securityCode=" target="_self">'.trans('error.SecurityEnter').'</a>']);
  27. }else{
  28. Cache::put($cacheKey, $ip, 120); // 缓存120分钟,因为每个session默认存活120分钟
  29. }
  30. }
  31. return $next($request);
  32. }
  33. }