我在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
。
我不知道如何解决这个问题。
答案 0 :(得分:0)
好像您的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');
});