使用 Auth 通过 IP 地址重定向到仪表板页面

Redirect to Dashboard page by IP Address with Auth

如果客户端 IP 地址与 IP 地址 192.168.1.154 匹配,我想通过登录页面自动重定向到仪表板页面。但是在我的仪表板页面中,我已经通过 Auth

放置了会话

我在内核中的中间件:

protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,           
        'ipcheck' => \App\Http\Middleware\IpMiddleware::class,
    ];

我的 IpMiddleware 代码:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class IpMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // $ip = \Request::ip();
        if ($request->ip() == "192.168.1.154") {               
            return redirect('home');
        }
        return $next($request);
    }
}

我的路线登录:

Route::get('/', ['middleware' => ['ipcheck'], function () {
    return view('auth.login');
}]);

我的回家路线:

Route::get('home', function () {

    if (Auth::guest()) {
        return back()->withInput();
    } else (Auth::user()->role_id == 1) {

        return view('dashboard');
    } 

});

我遇到了一个错误:

This webpage has a redirect loop

ERR_TOO_MANY_REDIRECTS

我现在可以做什么?

你需要在你 middleware 而不是 dashboard

中设置自动 login/session

假设你想自动登录 id 1 那么它应该是这样的

public function handle($request, Closure $next)
{
// $ip = \Request::ip();
    if ($request->ip() == "192.168.1.154") {               
        $user_id = 1;//
        Auth::loginUsingId($user_id);
        return redirect('home');
    }
    return $next($request);
}

在你的 home 路由中你检查 Auth 这对于访客来说是正确的,而不是对于登录用户所以它再次重定向到 auth.login 因为 auth.login 有中间件要重定向到home 然后 home 检查 guestAuth ..... 及其 make cicle 并且你得到错误

This webpage has a redirect loop

ERR_TOO_MANY_REDIRECTS