私は3つのカスタムミドルウェア、すなわちRedirectIfNotAdmin
,RedirectIfNotStartup
,RedirectIfNotInvestor
を作成しました。それぞれルート上に複数のミドルウェアを適用するlaravel
ミドルウェアコード:
class RedirectIfNotAdmin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$user = Auth::user()->user_type;
if ($user != 'admin') {
return response('Unauthorized.', 401);
}
return $next($request);
}
}
class RedirectIfNotStartup
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$user = Auth::user()->user_type;
if ($user != 'startup') {
return response('Unauthorized.', 401);
}
return $next($request);
}
}
class RedirectIfNotInvestor
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$user = Auth::user()->user_type;
if ($user != 'investor') {
return response('Unauthorized.', 401);
}
return $next($request);
}
}
ルート:
Route::group(array('namespace' => 'UserControllers'), function(){
Route::group(['middleware' => ['auth', 'admin', 'startup', 'investor']], function() {
Route::any('showidea/{id}', ['as' => 'showidea', 'uses' => '[email protected]']);
Route::get('community', '[email protected]');
Route::post('communities', '[email protected]');
Route::get('edit/{id}', ['as' => 'edit', 'uses' => '[email protected]']);
Route::get('delete/{id}', '[email protected]');
Route::post('update/{id}', ['as' => 'update', 'uses' => '[email protected]']);
Route::any('create', '[email protected]');
Route::post('idea', '[email protected]');
Route::get('users', '[email protected]');
Route::get('deleteUser/{id}', '[email protected]');
Route::get('delete/idea/{id}', '[email protected]');
Route::get('approve/{id}', '[email protected]');
Route::get('edit/idea/{id}', [ 'as' => 'edit/idea', 'uses' => '[email protected]']);
Route::post('update/idea/{id}', [ 'as' => 'update/idea', 'uses' => '[email protected]']);
});
});
私が直面しています問題はそれだけで、他の2 middlewares
にRedirectIfNotAdmin
ミドルウェアに入るとされていない、ということです。それはunauthorized` startup
とinvestor. But it is applying
管理middleware on every route and returns the response
のために作られたルートを承認する必要があり
カーネルファイル:
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'admin' => \App\Http\Middleware\RedirectIfNotAdmin::class,
'investor' => \App\Http\Middleware\RedirectIfNotInvestor::class,
'startup' => \App\Http\Middleware\RedirectIfNotStartup::class
];
}
に
type
ミドルウェアを使用して、次のミドルウェアは明らかに適用されません。 – Arcesilasミドルウェアの順序を変更する必要がありますので、['auth'、 'startup'、 'investor'、 'admin'] –
注文を変更しましたが、今度は致命的なエラーを表示しています >致命的なエラー:クラス 'App \ Http \ Middleware \ Auth'が見つかりませんでした@Robin Dirksen –