我使用Laravel 5.6.33。我希望用户只有在登录后才能访问“仪表盘”页面。当我使用“来宾”中间件时,用户根本无法访问该页面,而当我使用“身份验证”中间件时,用户始终可以访问该页面。我该怎么办?
Route::group(['middleware' => ['web']], function (){
Route::get('/dashboard', [
'uses' => 'UserController@getDashboard',
'as' => 'dashboard',
'middleware' => 'auth'
]);
});
我还在$this->middleware('auth');
函数或getDashboard
的构造函数中添加了UserController
,但是它不起作用。我该怎么办?
在Kernel.php中,auth
地址如下:
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
答案 0 :(得分:1)
如果您使用的是Laravel 5.6
,则无需使用web
中间件包装路由,只要将它们放入routes\web.php
文件中即可。 Laravel在RouteServiceProvider.php
中为您做到了。
您可以使用auth
中间件。试试这个,而不是你拥有的:
Route::middleware('auth')->group(function() {
Route::get('/dashboard', [
'uses' => 'UserController@getDashboard',
'as' => 'dashboard'
]);
});
答案 1 :(得分:0)
您什么都不要做。
Route::group(['middleware'=>'auth'],function () { //you can create the list of the url or the resource here to block the unath users. Route::resource('brands', 'BrandController'); Route::resource('products', 'ProductController'); });
或在要阻止的控制器上使用构造函数。
public function __construct()
{
$this->middleware('auth');
}
它将阻止该控制器上的所有功能,例如索引,创建,存储,更新,删除。只有auth才能使用这些功能。