2017-02-12 8 views
0

私はlaravelの初心者です。ユーザーがログインしていると、別のルートにリダイレクトしようとしています。サインアップとログインは問題なく動作しますが、私は新人のミスをした場合、私はlaravelが非常に新しいです、とニュースのルートが設定されている私を許しなさいlaravelユーザーがログインしているときにルーティングするようにリダイレクト

HTTP/1.0 302 Found Cache-Control: no-cache, private Location: http://localhost/red-sec/public/news <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta http-equiv="refresh" content="1;url=http://localhost/red-sec/public/news" /> <title>Redirecting to http://localhost/red-sec/public/news</title> </head> <body> Redirecting to <a href="http://localhost/red-sec/public/news">http://localhost/red-sec/public/news</a>. </body> </html> 

@if(Auth::check()) 
    {{ 
     redirect()->route('news') 
    }} 
@endif 

リダイレクトスクリプトは、このような画面に出力を得ることをしよう正しく動作しています

EDIT 1:最初のコメントについて 、はい、ここに私のweb.phpファイルは次のとおりです。

<?php 

/* 
|-------------------------------------------------------------------------- 
| Web Routes 
|-------------------------------------------------------------------------- 
| 
| Here is where you can register web routes for your application. These 
| routes are loaded by the RouteServiceProvider within a group which 
| contains the "web" middleware group. Now create something great! 
| 
*/ 

Route::get('/', function() { 
    return view('welcome'); 
})->name('home'); 

Route::post('/signup', [ 
    'uses' => '[email protected]', 
    'as' => 'signup' 
]); 

Route::post('/signin', [ 
    'uses' => '[email protected]', 
    'as' => 'signin' 
]); 

Route::get('/news', [ 
    'uses' => '[email protected]', 
    'as' => 'news', 
    'middleware' => 'auth' 
]); 
+0

が実際にニュースという名前のルートである:あなたのweb.phpが、これは/ルートの場所を取る必要がありますか?あなたのルートファイルには、 'Route :: get( '/ news') - > name( 'news')'のようなものがありますか? – dargue3

+0

質問を編集しました。web.phpファイルを確認してください。それは –

+0

です。リダイレクトスクリプトが正しく生成されているようですが、画面に表示しています。 –

答えて

3

あなたがしようとすべきではない(とすることはできません)ビューにリダイレクトします。ビューは、ビジネスロジックを実行するのではなく、データを表示するためにのみ使用する必要があります。

あなたは(あなたがルータから直接ビューを返す)任意のロジックを実行するためにコントローラを使用していないので、あなたはこのような何かを行うことができます:あなたのビューに表示

Route::get('/', function() { 
    if(Auth::check()) { 
     return redirect()->route('news'); 
    } 

    return view('welcome'); 
})->name('home'); 

テキストは実際にはHTTP応答です。

+0

ああ、web.phpファイルのように見えるの画像ですか?しかし、ユーザーがログインしている場合は、ウェルカムページのみで常にニュースにリダイレクトすることは望ましくありません –

+0

最も簡単な方法は、このチェックをホームコントローラに追加することです。 – Laran

+0

okですので、ホームコントローラを作成する必要がありますか?しかし、私は家のモデルがありません。私は家のモデルが必要ですか? –

2

だから、既にログインしているかどうかを確認したいと思っています。もしログインページから離れたいと思っていたら?あなたはメソッドでUserControllerのそれを達成することができます。それはあなたがAuth::check()を行うことができサインインビューを返し、それが本当であれば、その後、redirect()->route('news')

を行うあなたは、すでに場所での認証足場のトンとLaravelは船ということ、しかし、ではwhich you can read about here.

を注意してくださいする前に

Route::get('/', function() { 
    if (Auth::check()) { 
    return redirect()->route('news'); 
    } 
    else { 
    return view('welcome'); 
    } 
} 
+0

が表示されますが、ログインページもメインページです。ユーザーが –

+0

にログインしている場合はメインページからニュースにリダイレクトしたいので、 'welcome.blade.php'にはログインフォームがあり、既にログインしていれば'news.blade.php'ビューを返すことができる'/news'にリダイレクトするでしょうか? – dargue3

+0

それはちょうどそれです –

関連する問題