我遵循此教程:https : //www.youtube.com/watch?v=kmJYVhG6UzM当前,我可以检查刀片服务器是否用户是管理员:
{{ Auth::user()->roles->toArray()[0]['role'] }}
HI ADMIN
@endif
如何使我的路线仅对管理员用户可用?
您需要为路由创建一个中间件。
使用:php artisan make:middleware AdminMiddleware
。
您将在中间件文件夹中找到一个具有该名称的新文件。
将逻辑放入中间件,例如
public function handle($request, Closure $next)
{
if(Auth::check())
{
return $next($request);
}
else
{
return view('auth.login')->withErrors('You are not logged in');
}
}
一旦在中间件中完成了逻辑,就可以在路由中调用它,或者使中间件适用于所有路由。
如果要将其添加到所有路由,请转到Kernel.php
并将其添加到$middleware
数组,例如
protected $middleware = [
'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
'Illuminate\Cookie\Middleware\EncryptCookies',
'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
'Illuminate\Session\Middleware\StartSession',
'Illuminate\View\Middleware\ShareErrorsFromSession',
'App\Http\Middleware\VerifyCsrfToken',
'App\Http\Middleware\AdminMiddleware',
];
如果只想将其添加到特定的路由,则将其添加到$routeMiddleware
变量,并将别名添加到路由。例如
protected $routeMiddleware = [
'auth' => 'App\Http\Middleware\Authenticate',
'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
'admin' => 'App\Http\Middleware\AdminMiddleware',
];
然后,您可以将其作为过滤器添加到路线中,例如
Route::get('admin/profile', ['middleware' => 'admin', function()
{
}]);
有关其他信息,请访问文档:
http://laravel.com/docs/master/middleware
编辑
对此的改进是使用PHP 5.6中引入的可变参数函数
http://php.net/manual/zh/migration56.new-features.php
不必为每个权限集制作中间件,您可以执行以下操作
中间件
namespace App\Http\Middleware;
use Closure;
use \App\Models\Role;
class PermissionMiddleware
{
// Pass parameters to this middleware
public function handle($request, Closure $next, ...$permitted_roles)
{
//Get a users role
$role = new Role;
$role_name = $role->getUserRoleByName();
foreach($permitted_roles as $permitted_role) {
if($permitted_role == $role_name) {
return $next($request);
}
}
return redirect()->back()->withErrors('You do not have the required permission');
}
}
注意... $ permitted_roles
Route::get('admin/profile', ['middleware' => 'PermissionMiddleware:Admin,Marketing', function()
{
}]);
现在,您可以为一个中间件指定所需的角色,而不必通过使用中间件参数来创建多个角色
文件https://laravel.com/docs/5.3/middleware#middleware-parameters
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句