使用 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
检查 guest
或 Auth
..... 及其 make cicle 并且你得到错误
This webpage has a redirect loop
ERR_TOO_MANY_REDIRECTS
如果客户端 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
假设你想自动登录 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
检查 guest
或 Auth
..... 及其 make cicle 并且你得到错误
This webpage has a redirect loop
ERR_TOO_MANY_REDIRECTS