仅供管理员访问



我想让中间件只允许管理员访问。在Sanctum中有点复杂因为如果我尝试在中间件中显示

dd(Auth::user())

返回null。但是api.php中的相同代码显示了用户的详细信息。所以我知道我可以写这段代码(我使用httponly cookie),但它是丑陋的,复杂的,我不确定它是安全的。

$cookie = $request->cookie('user');
$explodeFields = explode(',', $cookie);
$role = explode(':', $explodeFields[4])[1];
dd($role);

User表有一个列"role"然后是用户角色,例如"admin"。在中间件中,我想检查用户是否为管理员,如果是,则允许访问。怎么做呢?

我建议您在用户模型上添加某种用户级别作为列。如果您只需要管理员和非管理员,您可以使用一个名为is_admin的布尔值。然后你可以创建一个像这样的中间件:

public function handle($request, Closure $next)
{
if (Auth::user()->is_admin == true) {
return $next($request);
}
return abort(404);
}

将此中间件应用于您希望仅限admins的路由。

相关内容

  • 没有找到相关文章

最新更新