登录后在 Laravel 中进行条件重定向
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/42918058/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Conditional redirect in laravel after login
提问by Al-Amin
How to redirect after login with condition in laravel 5.4, As Like:
如何在 Laravel 5.4 中使用条件登录后重定向,如下所示:
if (Auth::user()->id==1) {
return redirect('admin');
}
else {
return redirect('/');
}
How to implement the condition.
如何执行条件。
回答by Hiren Makwana
Add following code in LoginController
在LoginController 中添加以下代码
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
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 = '/admin';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest', ['except' => 'logout']);
}
protected function authenticated(Request $request, $user)
{
if ( $user->isAdmin() ) {// do your magic here
return redirect()->route('dashboard');
}
return redirect('/home');
}
}
回答by Gammer
This is the method which you should change in RedirectIfAuthenticated.php
这是你应该改变的方法 RedirectIfAuthenticated.php
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/dashboard'); // Change this line
}
return $next($request);
}
回答by PHP Team
@Al-Amin to redirect after login successfully based on role id you can override authenticated(Request $request, $user) function in your Auth Controller or Login Controller if you have in below manner :
@Al-Amin 根据角色 id 成功登录后重定向,如果您有以下方式,您可以覆盖 Auth Controller 或 Login Controller 中的 authentication(Request $request, $user) 函数:
/**
* [authenticated is used to redirect user after login based on role]
* @param Request $request [request object]
* @param [type] $user [user object to check user role]
* @return [type] [return type]
*/
protected function authenticated(Request $request, $user)
{
if($user->role->id == 1) {
return redirect()->intended('/admin'); // it will be according to your routes.
} else {
return redirect()->intended('/'); // it also be according to your need and routes
}
}