isSecurity.php 928 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. namespace App\Http\Middleware;
  3. use App\Components\IP;
  4. use Cache;
  5. use Closure;
  6. use Log;
  7. use Response;
  8. class isSecurity
  9. {
  10. /**
  11. * 是否需要安全码才访问(仅用于登录页).
  12. *
  13. * @param $request
  14. * @param Closure $next
  15. * @return mixed
  16. */
  17. public function handle($request, Closure $next)
  18. {
  19. $ip = IP::getClientIP();
  20. $code = $request->securityCode;
  21. $cacheKey = 'SecurityLogin_'.ip2long($ip);
  22. $websiteSecurityCode = sysConfig('website_security_code');
  23. if ($websiteSecurityCode && ! Cache::has($cacheKey)) {
  24. if ($code !== $websiteSecurityCode) {
  25. Log::warning(trans('errors.unsafe_enter').$ip);
  26. return Response::view('auth.safe');
  27. }
  28. Cache::put($cacheKey, $ip, 7200); // 2小时之内无需再次输入安全码访问
  29. }
  30. return $next($request);
  31. }
  32. }