如何防止用户看到管理员视图
How to Prevent users to see admin views
我目前遇到技术问题。我在我的应用程序中配置了 Multi Auth,一切正常。在我的应用程序中有一些视图,我只授予管理员访问权限。我通过使用
实现了这一点
@if(Auth::guard('admin')->check())
// my restricted navigation links / routes.
@endif
但问题是,只要管理员在线,条件就会设置为真,并且所有用户和其他警卫都可以看到链接。请帮助我如何防止其他用户看到这些链接,即使管理员已登录。
由于您的应用是多重授权的,我假设您已经设置了角色(可能还有权限)。
Spatie 的 laravel-permission 包包含一个 Blade 指令 @role('<insert intended role>')
& @endrole
。我在自己的应用程序中使用它来防止普通用户看到针对特定角色的内容。
例如:
@role('admin')
<a href="/admin/users/1/edit">Edit</a>;
@endrole
具有管理员角色的用户可以看到这个link,其他人不能。
除此之外,您还可以在此路由上启用中间件:
Route::middleware(['auth', 'role:admin'])->prefix('admin')->group(function (Router $router) {
$router->get('/users/{user}', 'AdminUserController@edit')
});
我目前遇到技术问题。我在我的应用程序中配置了 Multi Auth,一切正常。在我的应用程序中有一些视图,我只授予管理员访问权限。我通过使用
实现了这一点@if(Auth::guard('admin')->check())
// my restricted navigation links / routes.
@endif
但问题是,只要管理员在线,条件就会设置为真,并且所有用户和其他警卫都可以看到链接。请帮助我如何防止其他用户看到这些链接,即使管理员已登录。
由于您的应用是多重授权的,我假设您已经设置了角色(可能还有权限)。
Spatie 的 laravel-permission 包包含一个 Blade 指令 @role('<insert intended role>')
& @endrole
。我在自己的应用程序中使用它来防止普通用户看到针对特定角色的内容。
例如:
@role('admin')
<a href="/admin/users/1/edit">Edit</a>;
@endrole
具有管理员角色的用户可以看到这个link,其他人不能。
除此之外,您还可以在此路由上启用中间件:
Route::middleware(['auth', 'role:admin'])->prefix('admin')->group(function (Router $router) { $router->get('/users/{user}', 'AdminUserController@edit') });