Laravel 重定向不适用于自定义中间件

Laravel 重定向不适用于自定义中间件,laravel,laravel-5.8,laravel-6,Laravel,Laravel 5.8,Laravel 6,我使用的是Laravel项目5.8版 我使用了两个中间件Admin和Author 我创建了AdminMiddleware和AuthorMiddleware 我在Kernel.php中注册了这两个文件。我更改了RedirectIfAuthenticated,loginController以进行自定义重定向。我创建了不同的路由组 对于管理中间件,它将重定向到admin.dashboard,对于author中间件,它将重定向到author.dashboard 然后,它将重定向到默认laravel登录用

我使用的是Laravel项目5.8版

我使用了两个中间件
Admin
Author

我创建了
AdminMiddleware
AuthorMiddleware

我在
Kernel.php
中注册了这两个文件。我更改了
RedirectIfAuthenticated
loginController
以进行自定义重定向。我创建了不同的路由组

对于管理中间件,它将重定向到
admin.dashboard
,对于author中间件,它将重定向到
author.dashboard

然后,它将重定向到默认laravel登录用户中的
/home
路由我想在登录后将admin重定向到admin.dashboard,将author重定向到author.dashboard。自定义重定向不起作用。我查看了我的项目好几次,但都没有找到问题所在

loginController.php

public function handle($request, Closure $next, $guard = null){
    if (Auth::guard($guard)->check() && Auth::user()->role->id==1) {
        return '/author/dashboard';
    }else if (Auth::guard($guard)->check() && Auth::user()->role->id==2) {
        return 'admin/dashboard';
    } else {
        return $next($request);
    }
}
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;


protected function authenticated(Request $request, $user)
{
    if(Auth::check() && Auth::user()->role->id==1) {
        return 'author/dashboard';
    } else if (Auth::check() && Auth::user()->role->id==2) {
        return 'admin/dashboard';
    }

    return redirect('/home');
}
/**
 * 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']);
}
}
RedirectIfAuthenticated.php

public function handle($request, Closure $next, $guard = null){
    if (Auth::guard($guard)->check() && Auth::user()->role->id==1) {
        return '/author/dashboard';
    }else if (Auth::guard($guard)->check() && Auth::user()->role->id==2) {
        return 'admin/dashboard';
    } else {
        return $next($request);
    }
}
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;


protected function authenticated(Request $request, $user)
{
    if(Auth::check() && Auth::user()->role->id==1) {
        return 'author/dashboard';
    } else if (Auth::check() && Auth::user()->role->id==2) {
        return 'admin/dashboard';
    }

    return redirect('/home');
}
/**
 * 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']);
}
}
authormidware

管理中间件

Web.php

public function handle($request, Closure $next, $guard = null){
    if (Auth::guard($guard)->check() && Auth::user()->role->id==1) {
        return '/author/dashboard';
    }else if (Auth::guard($guard)->check() && Auth::user()->role->id==2) {
        return 'admin/dashboard';
    } else {
        return $next($request);
    }
}
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;


protected function authenticated(Request $request, $user)
{
    if(Auth::check() && Auth::user()->role->id==1) {
        return 'author/dashboard';
    } else if (Auth::check() && Auth::user()->role->id==2) {
        return 'admin/dashboard';
    }

    return redirect('/home');
}
/**
 * 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']);
}
}
作者/DashobardController

public function handle($request, Closure $next, $guard = null){
    if (Auth::user()->role->id==1) {
        return '/author/dashboard';
    }else if (Auth::user()->role->id==2) {
        return 'admin/dashboard';
    } else {
        return $next($request);
    }
}
管理员/DashobardController

public function handle($request, Closure $next, $guard = null){
    if (Auth::user()->role->id==1) {
        return '/author/dashboard';
    }else if (Auth::user()->role->id==2) {
        return 'admin/dashboard';
    } else {
        return $next($request);
    }
}

我是新来的拉威尔人。首次遇到此问题,无法找到问题,请帮助。更改

RedirectIfAuthenticated.php

public function handle($request, Closure $next, $guard = null){
    if (Auth::guard($guard)->check() && Auth::user()->role->id==1) {
        return '/author/dashboard';
    }else if (Auth::guard($guard)->check() && Auth::user()->role->id==2) {
        return 'admin/dashboard';
    } else {
        return $next($request);
    }
}
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;


protected function authenticated(Request $request, $user)
{
    if(Auth::check() && Auth::user()->role->id==1) {
        return 'author/dashboard';
    } else if (Auth::check() && Auth::user()->role->id==2) {
        return 'admin/dashboard';
    }

    return redirect('/home');
}
/**
 * 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']);
}
}

public function handle($request, Closure $next, $guard = null){
    if (Auth::user()->role->id==1) {
        return '/author/dashboard';
    }else if (Auth::user()->role->id==2) {
        return 'admin/dashboard';
    } else {
        return $next($request);
    }
}
Logincontoller.php

public function handle($request, Closure $next, $guard = null){
    if (Auth::guard($guard)->check() && Auth::user()->role->id==1) {
        return '/author/dashboard';
    }else if (Auth::guard($guard)->check() && Auth::user()->role->id==2) {
        return 'admin/dashboard';
    } else {
        return $next($request);
    }
}
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;


protected function authenticated(Request $request, $user)
{
    if(Auth::check() && Auth::user()->role->id==1) {
        return 'author/dashboard';
    } else if (Auth::check() && Auth::user()->role->id==2) {
        return 'admin/dashboard';
    }

    return redirect('/home');
}
/**
 * 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']);
}
}

您需要在
LoginController.php中编辑以下行

namespace-App\Http\Controllers\Auth;
使用App\Http\Controllers\Controller;
使用Illumb\Foundation\Auth\AuthenticatesUsers;
使用\Http\Request;
类LoginController扩展控制器
{
/*
|--------------------------------------------------------------------------
|登录控制器
|--------------------------------------------------------------------------
|
|此控制器处理应用程序和应用程序的身份验证用户
|将它们重定向到主屏幕。控制器使用
|为您的应用程序方便地提供其功能。
|
*/
使用认证用户;
已验证的受保护函数(请求$Request,$user)
{
if(Auth::check()&&Auth::user()->role->id==1){
return redirect()->route('author.dashboard');
}else if(Auth::check()&&Auth::user()->role->id==2){
return redirect()->route('admin.dashboard');
}
返回重定向('/home');
}
/**
*登录后重定向用户的位置。
*
*@var字符串
*/
//受保护的$redirectTo='/admin';
/**
*创建一个新的控制器实例。
*
*@返回无效
*/
公共函数构造()
{
$this->middleware('guest',['except'=>'logout']);
}
}

登录后是否重定向到
/home
?我想将admin重定向到
admin.dashboard
并将author重定向到
author.dashboard
登录后也在
logincontroller.php
中更改名称仍将重定向到
/home
路径。您是否更改了登录控制器??
/author/dashboard
是工作正常,但登录后不会重定向到此。我查过你的密码了。我同时更改了loginController和RedirectIIFauteTate。还有其他文件需要更改吗?还有别的地方吗?