【问题标题】:Redirect to Dashboard page by IP Address with Auth使用 Auth 通过 IP 地址重定向到仪表板页面
【发布时间】:2018-02-16 20:59:34
【问题描述】:

如果客户端 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

我现在能做什么?

【问题讨论】:

  • 我认为看起来像中间件问题
  • 看看这个问题可能对你有帮助stackoverflow.com/questions/30125235/…
  • @SagarGautam 我们如何使用return eturn redirect('/home')->with(Auth::user()->role_id=1);
  • @SagarGautam :我认为有问题,因为它在没有身份验证的情况下重定向
  • 您想根据用户类型重定向到两个不同的仪表板?

标签: php laravel laravel-5 middleware


【解决方案1】:

您需要在middleware 中而不是在dashboard 中进行自动登录/会话

如果你想自动登录 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 检查@ 987654331@ 或 Auth ..... 和它的 make cicle 你得到了错误

这个网页有一个重定向循环

ERR_TOO_MANY_REDIRECTS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多