2017-08-06 8 views
0

私は新鮮なlaravelプロジェクトに取り組んでいます。Laravel - Middlewareログイン以外の目的のページへのルートを変更する方法

私はその後、私はこのようなテスト目的のためにルートを作成した作曲を通じてlaravelフレームワークをインストールしていた:

Route::get('/', function() { 
return view('pages.home'); 
}); 

これはうまく働いたと私は目的のページを得ました。今ミドルウェアを理解するために、私はこのコード行を追加:

Route::get('/', function() { 
return view('pages.home'); 
})->middleware('auth'); 

Route [login] not defined. 

の今、その投げエラー私はなぜそれではない任意の航海パッケージはthatsのインストールhaventはので、それはこのエラーを投げる、ということを知ってどのような経路は'login'です。

しかし、私の質問は、のように私の望むページにそのRoute [login]を変更するにはどうすればいいですか?

私にこれを手伝ってください。

答えて

1

最初に実行php artisan make:authを。その後LoginControllerに次の行を追加します。

class LoginController extends Controller { 
    use AuthenticatesUsers; 
    protected $redirectTo = '/home'; 

    public function __construct() 
    { 
     $this->middleware('guest')->except('logout'); 
    } 

    public function showLoginForm() { 
      return view("pages.notlogin"); 
    } 


} 
+0

どのように私はPHPの職人のメイクを実行せずに使用することができます。 –

+0

AUTHあなたは、あなた自身の 'ルート::ます(「ログイン」、コールバックまたはコントローラのアクション)を登録する必要があります - >名前(「ログイン」);'が、つまり、既に組み込まれているデフォルトのものをたくさん手に入れていないということです。 – apokryfos

0

Auth::routes()は、ユーザー認証に必要なすべてのルートを生成するのに役立ちますちょうどヘルパークラスで、そのエラーを取り除くために、あなたのルートファイルに

Auth::routes(); 

を追加してみてください。

あなたの代わりにこれを追加し、あなたが望むようにそれを変更するURLを変更する場合:Laravelの認証定型を作るために

// Authentication Routes... 
$this->get('login', 'Auth\[email protected]')->name('login'); 
$this->post('login', 'Auth\[email protected]'); 
$this->post('logout', 'Auth\[email protected]')->name('logout'); 

// Registration Routes... 
$this->get('register', 'Auth\[email protected]')->name('register'); 
$this->post('register', 'Auth\[email protected]'); 

// Password Reset Routes... 
$this->get('password/reset', 'Auth\[email protected]'); 
$this->post('password/email', 'Auth\[email protected]'); 
$this->get('password/reset/{token}', 'Auth\[email protected]'); 
$this->post('password/reset', 'Auth\[email protected]'); 
1

あなたはボイジャーパッケージをインストールしていませんでしたので、しかし、あなたは一般的な認証のための任意のルートを作成したり、定義されていませんでしたので、あなたがメッセージRoute [login] not defined.を取得しているではありません。

はい、Voyagerパッケージをインストールすると、パッケージ自体が必要な認証ルートとコントローラを作成するため、エラーメッセージは表示されなくなります。

これを実行するには、php artisan make:authをコマンドラインで実行する必要があります。 laravel 5.4で

は、すべてのミドルウェアをファイルに

app\Http\Kernel.php 

に登録されている、あなたは

保護$ routeMiddleware = [ 'AUTHは' => \照らすことがわかります\ Auth \ Middleware \ Authenticate :: class、

すべての認証関連タスクは\Illuminate\Auth\Middleware\Authenticateクラスで処理されています。したがって、認証ミドルウェアの基本動作を変更する場合は、このクラスを拡張する必要があります。

namespace App\Http\Middleware; 

use Illuminate\Auth\Middleware\Authenticate as BaseAuthenticator; 

class Authenticate extends BaseAuthenticator 
{ 
    protected function authenticate(array $guards) 
    { 
     // TO DO: do your desired change 
    } 
} 
+0

'php artisan:を使わずに' protected function authenticate(array $ guard) 'に' Route [pages.notauth] make auth'を実行します。認証されていない場合は 'pages.noauth'の私の定義したルートに行くべきです。 –

+0

あなたはあなたの望むURLにリダイレクトすることができます 'return redirect( '/ register');'そう新しい例外をスローする( 'Unauthenticated。'、$ guards); 'のように例外を発生させることができます。それはあなたがしたいことに依存します。 – asmmahmud

関連する問題