2017-09-12 13 views
0

ルートを持つパッケージがいくつかあるプロジェクトがあります。私は公にアクセス可能でなければならないステージング/デモ環境を持っています。Laravel 5.5はステージングで認証が必要です

すべてのルートに対してauthミドルウェア(または同様のもの)を要求する方法はありますか?個別のルートとルートグループにすべて入れないでください。 (ブートストラップで何かを考える??)

答えて

4

、あなたのアプリケーションへのすべてのHTTP要求時に実行するためのミドルウェアをしたい場合は、単にあなたのapp/Http/Kernel.phpクラスの$middlewareプロパティにミドルウェアクラスを一覧表示します。

protected $middleware = [ 
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
    \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, 
    \App\Http\Middleware\TrimStrings::class, 
    \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, 
    \App\Http\Middleware\TrustProxies::class, 
    YOUR MIDDLEWARE::class, 
]; 

あなたがアクセス権を持っていない、あるいはしたくない場合は、パッケージ・コントローラを変更するために、あなたは(AuthenticateSession継承をお勧めしますたとえばミドルウェアを作成することができます。

<?php 

namespace App\Http\Middleware; 

use Illuminate\Session\Middleware\AuthenticateSession; 

use Auth; 
use Closure; 

class AuthenticateIfEnvironment extends AuthenticateSession 
{ 
    public function handle($request, Closure $next) 
    { 
     if (env('APP_ENV') == 'XXXXXXXX' && !Auth::user() && !$request->is('login')) { 
      return redirect('/login'); 
     } 
     return parent::handle($request, $next); 
    } 
} 

はその後Kernal.phpがどのように見えますこの:

protected $middleware = [ 
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
    \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, 
    \App\Http\Middleware\TrimStrings::class, 
    \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, 
    \App\Http\Middleware\TrustProxies::class, 
    \App\Http\Middleware\AuthenticateIfEnvironment::class, 
]; 
+0

が問題に遭遇したが認証ミドルウェアを追加しましただけでなく、それはルートだ、ので/ログインルートに到達することはできません答えは、書かれたとして、あなたの作る、言っていません。。。 (それは暗示されているが)。私たちが将来の読者のために明確であることを確かめたいだけです。 –

+0

ログインとログアウトを処理するコントローラに次の行を追加することができます(AuthControllerの場合もあります):$ this-> middleware( 'auth'、['except' => ['getActivate'、 'anotherMethod']]); 'コンストラクタの内部。 –

+0

うん。私はパッケージコントローラを使いこなすことを望んでいません。基本的に、これらのパッケージは「フルサービス」です。だから、主なアプリケーションバンドルの中でできることを(したい)しなければならないと思う。ピアレビューを待っている編集を参照してください。 –

関連する問題