2016-09-15 9 views
2

Laravelでログイン/サインアップページを作成しても問題ありませんが、認証されたユーザーのみがURLにアクセスできるようにしてルートを保護したいと考えています。Laravelのルート保護に関する問題5.3

これは私のweb.phpです:

私UserController.phpで
Route::get('/', [ 
    'uses' => '[email protected]', 
    'as' => 'login' 
]); 

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

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

Route::group(['prefix' => 'app'], function(){ 

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

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

    Route::get('/home', [ 
      'uses' => '[email protected]', 
      'as' => 'dashboard' 
    ])->middleware('auth'); 

    // I also tried 'middleware' => 'auth', ends in same thing 

}); 

public function getSignup(){ 
    $organizations = Organizations::all()->where('deleted', '0')->all(); 
    return view('pages.signup', ['organizations' => $organizations]); 
} 

public function getLogin(){ 
    return view('pages.login'); 
} 

public function getDashboard(){ 
    return view('pages.dashboard'); 
} 

public function getLogout(){ 
    Auth::logout(); 
    return redirect()->route('login'); 
} 

public function postSubmitSignup(Request $request){ 

    $newuser = new User(); 

    $newuser->firstname = $request['firstname']; 
    $newuser->lastname = $request['lastname']; 
    $newuser->username = $request['username']; 
    $newuser->email = $request['email']; 
    $newuser->password = bcrypt($request['password']); 
    $newuser->passwordhint = $request['passwordhint']; 
    $newuser->organization = $request['organization']; 
    $newuser->location = $request['location']; 
    $newuser->phone = $request['phone']; 
    $newuser->signupnote = $request['remarks']; 

    $newuser->save(); 

    return redirect()->route('login'); 
} 

public function postSubmitLogin(Request $request){ 
    if(Auth::attempt(["username" => $request['username'], "password" => $request['password']])){ 
     return redirect()->route('dashboard'); 
    } 

    session()->flash('invalid', 'Bad Credentials'); 
    return redirect()->back()->withInput(); 

} 

そして、私は有効な資格情報を使用してログインしようとしたとき、私は次のエラーメッセージとURLを取得http://website.com/loginのようですが、ログインページがhttp://website.com/次の場所にあります。

Sorry, the page you are looking for could not be found. 
1/1 NotFoundHttpException in RouteCollection.php line 161: 

    in RouteCollection.php line 161 
    at RouteCollection->match(object(Request)) in Router.php line 780 
    at Router->findRoute(object(Request)) in Router.php line 610 
    at Router->dispatchToRoute(object(Request)) in Router.php line 596 
    at Router->dispatch(object(Request)) in Kernel.php line 267 
    at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 53 

ダッシュボードのURLに直接アクセスしようとすると、同じエラーが発生します。私はそれをどうやって正しく行うべきなのでしょうか?

+0

あなたはルートや何を保護したいだけですか? –

+0

特定のルートを保護したい場合は、それを認証ミドルウェアでグループ化するだけです。 } '}' –

+0

のようにRoute :: group(['ミドルウェア' => 'auth']、function(){ }ですので、ウェブの下に置く必要はありませんか?私がやったようにやっているのと同じように、5.3でルートがデフォルトでWebにあります。 – JackSlayer94

答えて

1

あなたは

Route::group(['middleware' => 'auth'], function(){ 

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


// and your other routes which you wanna protect 
} 

以下のようなあなたのルートが今、あなたはそこに追加されますログアウトルートや他のルートがログインしている簡単な言葉ユーザーで認証されたユーザーにのみアクセス可能になりますグループにする必要があります。

+0

@liftikhar uddinはまだ動作しません。私は同じことを得る。ここに私のプロジェクト全体があります:[GitHub](https://github.com/yeshwanthvshenoy/De-Bug)。何が間違っているのか教えてください。私は非常に小さい何かにこだわっています。 – JackSlayer94

+0

https://gist.github.com/iftikharuddin/9ef222dafb2e47d8e715faefbf89c03cこれを試してみると、グループミドルウェアの認証に含まれるものはすべて、ログインしているユーザーのみがアクセスできます –

+0

これで解決できません。上記と同じエラーが出ます。 – JackSlayer94

関連する問題