2016-09-15 8 views
2

Я сделал страницу входа/регистрации в Laravel, и она работает нормально, но я хочу защитить маршруты, разрешив только авторизированным пользователям доступ к URL-адресу.Проблема с защитой маршрута в Laravel 5.3

Это мой web.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 

}); 

В моей UserController.php:

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

Если вы хотите защитить некоторые конкретные маршруты, просто сгруппируйте их в средстве среднего уровня, что и есть. 'Route :: group (['middleware' => 'auth'], function() { // ваши маршруты }' –

+0

Так что им не нужно быть в сети? Я видел учебник, помещающий их под web и например, в 5.3, маршруты по умолчанию в сети. – 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 no все еще не работает. Я получаю то же самое. Вот мой весь проект: [GitHub] (https://github.com/yeshwanthvshenoy/De-Bug). Не могли бы вы указать, что случилось? Я застрял в чем-то очень маленьком. – JackSlayer94

+0

https://gist.github.com/iftikharuddin/9ef222dafb2e47d8e715faefbf89c03c Попробуйте это, и теперь все, что находится в групповом промежуточном ауте, будет доступно только для зарегистрированных пользователей –

+0

Нет, это не решит его. Я получаю ту же ошибку, что и выше. – JackSlayer94