【问题标题】:Similar route in group of route with different guard in laravel在laravel中具有不同警卫的一组路线中的相似路线
【发布时间】:2017-12-15 04:38:08
【问题描述】:

我在auth.php 文件中定义了两个不同的守卫,如下所示:

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

web.php 路由中有两个不同的部分路由。一个用于网站 admn,另一个用于作为这些网站成员的普通用户。像这样:

Route::prefix('/website/{website}')->middleware('auth:website')->group(function () {

            Route::group(['prefix' => 'banner_ads'], function () {
                Route::get('banner_adsDatatable', ['as' => 'banner_adsDatatable', 'uses' => 'BannerAdsController@banner_adsDatatable']);
            });
            Route::resource('/banner_ads', 'BannerAdsController');

     Route::prefix('/member/{member}')->middleware('auth:web')->group(function () {

            Route::group(['prefix' => 'banner_ads'], function () {
                Route::get('banner_adsDatatable', ['as' => 'banner_adsDatatable', 'uses' => 'BannerAdsController@banner_adsDatatable']);
            });
            Route::resource('/banner_ads', 'BannerAdsController');

     });
});

问题是我有一个与用户(网站管理员和成员)共享的资源控制器(横幅广告)。如您所见,我必须添加两次。

但是因为对于普通用户我再次定义了banner ads 控制器,例如当我调用banner_ads.update 时总是返回unAuthenticated user

我不知道我能做些什么来解决这个问题。

【问题讨论】:

    标签: php laravel laravel-5.5


    【解决方案1】:

    您的 auth:web 中间件似乎在 auth:website 内部。这基本上是在检查试图访问经过身份验证的用户的路由的经过身份验证的管理员。

    您正尝试以普通用户身份访问路由。所以它不起作用。只需用以下代码替换您的代码:

    Route::prefix('/website/{website}')->middleware('auth:website')->group(function () {
    
                        Route::group(['prefix' => 'banner_ads'], function () {
                            Route::get('banner_adsDatatable', ['as' => 'banner_adsDatatable', 'uses' => 'BannerAdsController@banner_adsDatatable']);
                        });
                        Route::resource('/banner_ads', 'BannerAdsController');
    
        });
    
    Route::prefix('/member/{member}')->middleware('auth:web')->group(function () {
    
    
    
               Route::group(['prefix' => 'banner_ads'], function () {
                            Route::get('banner_adsDatatable', ['as' => 'banner_adsDatatable', 'uses' => 'BannerAdsController@banner_adsDatatable']);
                        });
                        Route::resource('/banner_ads', 'BannerAdsController');
    
                 });
    

    【讨论】:

    • 但是/member/{member}应该是网站目录的子集
    • 你有什么想法吗?
    猜你喜欢
    • 2019-07-02
    • 2023-04-09
    • 2017-06-15
    • 2020-12-03
    • 2017-01-15
    • 1970-01-01
    • 2018-11-04
    • 2016-08-30
    • 2017-07-09
    相关资源
    最近更新 更多