php - Spatie/laravel 权限。hasRole() on null
问题描述
添加了 spatie/laravel-permission,一切都由 routes/api.php 中的中间件进行
Route::get('roles', [RoleController::class, 'rolesIndex'])->middleware('role:Admin');
我想对 api 进行角色检查并添加了一个功能:
function check($roleName) {
$user = Auth::user();
if (!$user->hasRole($roleName)) {
abort(403);
}
return response('', 202);
}
添加到路由器 - 寻址路由:
Route::get('check/{roleName}', [RoleController::class, 'check']);
但是当与我联系时,它给出了:Call to a member function hasRole() on null
解决方案
要获得您的身份验证user
,API
您需要引用api
警卫:
$user = auth('api')->user();
if (!$user->hasRole($roleName) {
// ...
}
或者更简单:
if (!auth('api')->user()->hasRole($roleName)) {
// ...
}
推荐阅读
- react-native - React Native 图像选择器在成功上传后显示图像太慢
- java - Spring REST 验证
- c++ - 函数的参数是否应该经常通过引用传递?
- c# - 为什么 botframework 实验性自适应 corebot C# 示例 SetProperty() 不保存 LUIS 返回的实体?
- php - 从以元素为键值php的数组生成数组元素
- mongodb - 在 Mongo 中填充后如何查询包含相同用户名的所有文档
- python - 我如何断言张量是 0 到 N `True`s,然后是 0 到 N`False`s 的序列?
- google-maps - 为两个变量(城镇名称)之间的距离生成谷歌地图网址
- maven - Gradle 依赖版本 '+'
- java - 如何删除工具栏左侧显示的默认菜单按钮?