【问题标题】:Issue with Route Protection in Laravel 5.3Laravel 5.3 中的路由保护问题
【发布时间】:2016-09-15 10:15:59
【问题描述】:

我在 Laravel 中创建了一个登录/注册页面,它运行良好,但我想通过允许经过身份验证的用户单独访问该 url 来保护路由。

这是我的 web.php:

Route::get('/', [
    'uses' => 'UserController@getLogin',
    'as' => 'login'
]);

Route::get('/signup', [
    'uses' => 'UserController@getSignup',
    'as' => 'signup'
]);

Route::get('/logout', [
        'uses' => 'UserController@getLogout',
        'as' => 'logout'
]);

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

    Route::post('/newuser', [
        'uses' => 'UserController@postSubmitSignup',
        'as' => 'submitsignup'
    ]);

    Route::post('/submitsignup', [
            'uses' => 'UserController@postSubmitLogin',
            'as' => 'submitlogin'
    ]);

    Route::get('/home', [
            'uses' => 'UserController@getDashboard',
            '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 时,我得到了同样的错误。我应该如何正确地做到这一点,如果有人能解释为什么会发生这种情况,那就太好了。

【问题讨论】:

  • 你只是想保护路线还是什么?
  • 如果你想保护一些特定的路由,只需将它分组到 auth 中间件中就可以了。 Route::group(['middleware' => 'auth'], function(){ //your routes }
  • 所以他们不需要在web下?我看到教程将它们放在网络下并像我一样做。另一件事是,在 5.3 中,路由默认在 web 中。
  • 在 laravel 5 和以前的版本中是必需的。在 5+ 版本中,没有必要将所有内容都放在 web 下。在 5.3 中有一个单独的 web.php 和 api.php 。
  • 是的,那我如何在 5.3 中保护我的路线?

标签: php laravel-routing laravel-5.3


【解决方案1】:

你需要像下面这样对你的路线进行分组

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

  Route::get('/logout', [
        'uses' => 'UserController@getLogout',
        'as' => 'logout'
  ]);


// and your other routes which you wanna protect
}

现在,您将在其中添加的注销路由和其他路由将只有经过身份验证的用户才能访问,简单来说就是已登录的用户。

【讨论】:

  • @liftikhar uddin no 仍然不起作用。我得到同样的东西。这是我的整个项目:[GitHub] (github.com/yeshwanthvshenoy/De-Bug)。你能指出什么是错的吗?我被困在一个非常小的东西里。
  • gist.github.com/iftikharuddin/9ef222dafb2e47d8e715faefbf89c03c 试试这个,现在组中间件身份验证中的所有内容都只能由登录用户访问
  • 不,这并不能解决问题。我得到与上面提到的相同的错误。
  • 什么错误?我在保护路线,我不是在谈论错误/
  • 我最终得到的结果与问题中提到的相同。它不保护路线
猜你喜欢
  • 2017-02-11
  • 2017-04-17
  • 2017-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 2017-05-15
  • 2019-09-13
相关资源
最近更新 更多