我正在laravel 5.3
开发一个简单的登录信息。
我有两个dashboard
,其中一个用于admins
,另一个用于subscribers
。我已经浏览了身份验证的文档,其中有路径自定义,如果我可以将$redirectTo = '/home'
更改为它将分别重定向视图的任何路由。
我的用户表中有一个名为is_admin的列,其中包含一个布尔值。
我正在尝试根据文档在LoginController
中放置以下代码:
<?php
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use \Auth;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
// protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest', ['except' => 'logout']);
}
/**
* Handle an authentication attempt.
*
* @return Response
*/
public function redirectPath()
{
if (Auth::user()->is_admin == 0)
{
return redirect()->intended('/memberprofile');
}
else
{
return redirect('/dashboard');
}
}
}
并注释掉protected $redirectTo = '/home';
,但它仍然会重定向到主页。即使我生成protected $redirectTo = '/dashboard'
,它也会路由到/home
。我不知道问题出在哪里。
我检查了代码后面的RedirectIfAunthenticated
中间件:
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
return $next($request);
}
这是否有任何问题?
请指导我
答案 0 :(得分:1)
更改handle()
中的app\Http\Middlewares\RedirectIfAunthenticated.php
方法,如下所示。该中间件旨在由开发人员进行更改。
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
if (Auth::user()->is_admin == 0) {
return redirect()->intended('/memberprofile');
} else {
return redirect('/dashboard');
}
}
return $next($request);
}
答案 1 :(得分:0)
在LoginController
中定义以下功能:
public function redirectPath()
{
if (Auth::user()->is_admin == 0)
{
return redirect()->intended('/memberprofile');
}
else
{
return redirect('/dashboard');
}
}
它将覆盖特征redirectPath
中定义的函数Illuminate\Foundation\Auth\RedirectsUsers
。
答案 2 :(得分:0)
根据Laravel Docs,当用户成功通过身份验证后,他们将被重定向到index.addAll
URI。您可以通过在/home
,LoginController
和RegisterController
上定义redirectTo属性来自定义验证后重定向位置:
ResetPasswordController
希望这有帮助!