Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在laravel中访问两个中间件的多个路由_Php_Laravel_Laravel 5.8_Laravel Middleware - Fatal编程技术网

Php 如何在laravel中访问两个中间件的多个路由

Php 如何在laravel中访问两个中间件的多个路由,php,laravel,laravel-5.8,laravel-middleware,Php,Laravel,Laravel 5.8,Laravel Middleware,你好,我被困在这个如何访问默认身份验证和tsr相同的路由。My auth.php如下所示:- 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', 'provider' => 'users',

你好,我被困在这个如何访问默认身份验证和tsr相同的路由。My auth.php如下所示:-

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
        'hash' => false,
    ],
    'tsr' => [
        'driver' => 'session',
        'provider' => 'tsrs',
    ],
],
这是我下面的web.php文件:-

 //Tsr Routes
 Route::get('/tsr', 'Tsr\TsrController@index')->name('tsrs.dashboard');
 Route::get('/tsr/login', 'Auth\Tsr\LoginController@login')->name('tsrs.auth.login');
 Route::post('tsr/login', 'Auth\Tsr\LoginController@loginAdmin')->name('tsrs.auth.loginAdmin');

Route::group(['middleware' => ['auth', 'auth:tsr'], 'prefix' => 'admin', 'as' => 'admin.'], function () {
 Route::get('/home', 'HomeController@index')
 Route::resource('regular_meetings', 'Admin\RegularMeetingsController');
 Route::post('regular_meetings_mass_destroy', ['uses' => 'Admin\RegularMeetingsController@massDestroy', 'as' => 'regular_meetings.mass_destroy']);
});
Kernel.php如下:-

protected $routeMiddleware = [
    'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'can' => \Illuminate\Auth\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'approved' => \App\Http\Middleware\ApproveMiddleware::class,
    'usergate' => \App\Http\Middleware\UserGate::class,
];
中间件如下:-

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class RedirectIfAuthenticated
{
/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @param  string|null  $guard
 * @return mixed
 */
public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check()) {
        return redirect('/admin/home');
    }

    return $next($request);
  }
}

可能重复@ChAsadUrRehman这个答案似乎只使用了一个守卫,而我使用的是多个守卫。在控制器中复制使用而不是路由之前检查我的问题。我建议创建一个新的中间层,在该中间层中检查或条件中两个中间件的条件,这样您就可以在两个中间件中使用路由。