laravel 5.3 中经过身份验证的用户的自定义视图
Custom view for authenticated user in laravel 5.3
我正在 laravel 5.3
中开发一个简单的登录。
我有两个 dashboard
,其中一个用于 admins
,另一个用于 subscribers
。我已经阅读了身份验证的文档,其中有路径自定义,如果我可以将 $redirectTo = '/home'
更改为任何路由,它将分别重定向视图。
我的用户 table 中有一个名为 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);
}
有什么问题吗?
请指导我
在您的 LoginController
中定义以下函数:
public function redirectPath()
{
if (Auth::user()->is_admin == 0)
{
return redirect()->intended('/memberprofile');
}
else
{
return redirect('/dashboard');
}
}
它将覆盖特征 Illuminate\Foundation\Auth\RedirectsUsers
中定义的函数 redirectPath
。
根据 Laravel Docs,当用户成功通过身份验证后,他们将被重定向到 /home
URI。您可以通过在 LoginController
、RegisterController
和 ResetPasswordController
:
上定义 redirectTo 属性 来自定义 post- 身份验证重定向位置
protected $redirectTo = '/your_own_route';
希望对您有所帮助!
更改 app\Http\Middlewares\RedirectIfAunthenticated.php
中的 handle()
方法如下。此中间件旨在由开发人员更改。
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);
}
我正在 laravel 5.3
中开发一个简单的登录。
我有两个 dashboard
,其中一个用于 admins
,另一个用于 subscribers
。我已经阅读了身份验证的文档,其中有路径自定义,如果我可以将 $redirectTo = '/home'
更改为任何路由,它将分别重定向视图。
我的用户 table 中有一个名为 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);
}
有什么问题吗?
请指导我
在您的 LoginController
中定义以下函数:
public function redirectPath()
{
if (Auth::user()->is_admin == 0)
{
return redirect()->intended('/memberprofile');
}
else
{
return redirect('/dashboard');
}
}
它将覆盖特征 Illuminate\Foundation\Auth\RedirectsUsers
中定义的函数 redirectPath
。
根据 Laravel Docs,当用户成功通过身份验证后,他们将被重定向到 /home
URI。您可以通过在 LoginController
、RegisterController
和 ResetPasswordController
:
protected $redirectTo = '/your_own_route';
希望对您有所帮助!
更改 app\Http\Middlewares\RedirectIfAunthenticated.php
中的 handle()
方法如下。此中间件旨在由开发人员更改。
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);
}