登录后在 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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 15:37:13  来源:igfitidea点击:

Conditional redirect in laravel after login

laravellaravel-5

提问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
        }
    }