在Laravel中使用2个防护来路由访问问题

时间:2018-08-20 18:55:14

标签: php laravel

我正在尝试在应用程序中实现4种组: 1)公开路线。 2)在通过名为“ superAdmin”的自定义防护访问它们之前需要进行身份验证的路由 3)前缀组中的路由 4)前缀组中需要通过默认防护“ web”访问的路由需要进行身份验证

当我与后卫SuperAdmin进行会话时,一切正常。我可以访问公共路由,前缀组中的路由以及保护组“ superAdmin”的路由。

但是,当我在防护“ web”上进行会话时,就会发生问题,所有路由(重定向到默认防护“ web”的前缀组中需要通过身份验证的路由除外)都重定向到/家。我调试了异常处理程序文件,它始终向我显示ModelNotFoundException

这是我的路由文件夹中的文件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');
});

// Registration Routes...
$this->get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');//Return view
$this->post('register/validateUserData', 'Auth\RegisterController@validateUserData');
$this->get('register/getPlans/{membership}', 'Auth\RegisterController@getPlansOfMembership');
$this->post('register', 'Auth\RegisterController@register');

// Autenthication Root Routes ...
$this->get('loginRoot', 'Auth\RootLoginController@showLoginForm')->name('rootLogin');
$this->post('loginRoot', 'Auth\RootLoginController@login');
$this->post('logoutRoot', 'Auth\RootLoginController@logout')->name('rootLogout');

Route::middleware(['auth:superAdmin'])->group(function () {     
    Route::get('/rootHome', 'Root\RootHomeController@index')->name('rootHome');
    Route::namespace('Root')->group(function () {
            Route::get('/users', "RootUserController@usersView");//Return view with table users     
            Route::post('/users', "RootUserController@showUsers");  
            Route::get('/createUser', "RootUserController@createUserView");//Return view for create User
            Route::post('/user', "RootUserController@createUser");
            Route::get('/user/edit/{user}', "RootUserController@editUserView");//Return view for edit User
            Route::put('/user/edit/{user}', "RootUserController@editUser");
            Route::delete('/user/delete/{user}', "RootUserController@deleteUser");
        });
});

Route::prefix('{organizationPrefix}')->group(function ($organizationPrefix) {
    Route::get('/', "Auth\LoginController@showLoginForm");
    // Authentication Routes...
    $this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
    $this->post('login', 'Auth\LoginController@login');
    $this->post('logout', 'Auth\LoginController@logout')->name('logout');

    // Password Reset Routes...
    $this->get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
    $this->post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
    $this->get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
    $this->post('password/reset', 'Auth\ResetPasswordController@reset');

    //Verify User
    Route::get('users/verify/{token}', 'User\UserController@verify')->name('verify');
    Route::name('resend')->get('users/{user}/resend', 'User\UserController@resend');

    Route::middleware(['auth:web','prefix.organization'])->group(function () {      
        Route::get('/home', 'HomeController@index')->name('home');      
        //Users routes
        Route::namespace('User')->group(function () {
            Route::get('/users', "UserController@usersView");//Return view with table users
            Route::post('/users', "UserController@showUsers");
            Route::get('/createUser', "UserController@createUserView");//Return view for create User
            Route::post('/user', "UserController@createUser");
            Route::get('/user/edit/{user}', "UserController@editUserView");//Return view for edit User
            Route::put('/user/edit/{user}', "UserController@editUser");
            Route::delete('/user/delete/{user}', "UserController@deleteUser");
        });
    });
});

我的auth.php文件位于配置文件夹中

/*
    |--------------------------------------------------------------------------
    | Authentication Defaults
    |--------------------------------------------------------------------------
    |
    | This option controls the default authentication "guard" and password
    | reset options for your application. You may change these defaults
    | as required, but they're a perfect start for most applications.
    |
    */

    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],

    /*
    |--------------------------------------------------------------------------
    | Authentication Guards
    |--------------------------------------------------------------------------
    |
    | Next, you may define every authentication guard for your application.
    | Of course, a great default configuration has been defined for you
    | here which uses session storage and the Eloquent user provider.
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | Supported: "session", "token"
    |
    */

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'superAdmin' => [
            'driver' => 'session',
            'provider' => 'superAdmins',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | User Providers
    |--------------------------------------------------------------------------
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | If you have multiple user tables or models you may configure multiple
    | sources which represent each model / table. These sources may then
    | be assigned to any extra authentication guards you have defined.
    |
    | Supported: "database", "eloquent"
    |
    */

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],

        'superAdmins' => [
            'driver' => 'eloquent',
            'model' => App\SuperAdmin::class,
        ],

        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

处理程序显示给我的错误

ModelNotFoundException {#596 ▼
  #model: "App\Company"
  #ids: []
  #message: "No query results for model [App\Company]."
  #code: 0
  #file: "C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\ImplicitRouteBinding.php"
  #line: 36
  trace: {▼
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\ImplicitRouteBinding.php:36 {▼
      › if (! $model = $instance->resolveRouteBinding($parameterValue)) {
      ›     throw (new ModelNotFoundException)->setModel(get_class($instance));
      › }
    }
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Router.php:768 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Middleware\SubstituteBindings.php:39 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:151 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken.php:68 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:151 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\View\Middleware\ShareErrorsFromSession.php:49 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:151 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Session\Middleware\StartSession.php:63 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:151 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse.php:37 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:151 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\EncryptCookies.php:66 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:151 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:104 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Router.php:667 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Router.php:642 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Router.php:608 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Router.php:597 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php:176 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:30 {▶}
    C:\xampp\htdocs\facturadorg\vendor\fideloper\proxy\src\TrustProxies.php:57 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:151 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php:31 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:151 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php:31 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:151 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ValidatePostSize.php:27 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:151 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode.php:62 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:151 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:104 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php:151 {▶}
    C:\xampp\htdocs\facturadorg\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php:116 {▶}
    C:\xampp\htdocs\facturadorg\public\index.php:55 {▼
      › $response = $kernel->handle(
      ›     $request = Illuminate\Http\Request::capture()
      › );
      arguments: {▶}
    }
    C:\xampp\htdocs\facturadorg\server.php:21 {▶}
  }
}

0 个答案:

没有答案