在 Laravel 5.5 中根据用户角色应用全局范围
Posted
技术标签:
【中文标题】在 Laravel 5.5 中根据用户角色应用全局范围【英文标题】:Apply global scope based on user role in Laravel 5.5 【发布时间】:2018-05-07 20:51:45 【问题描述】:对于某些模型,如果登录用户不是超级管理员,我需要应用全局范围。在模型的boot()
方法中,我尝试了这样的方法:
<?php
namespace App;
use Auth;
use App\Scopes\RoleScope;
use Illuminate\Database\Eloquent\Model;
class MyModel extends Model
protected static function boot()
parent::boot();
if( Auth::check() && ! Auth::user()->isSuperAdmin() )
static::addGlobalScope(new RoleScope);
范围从未应用!我在这里做错了什么?如何实现基于用户角色应用范围的目标?谢谢
【问题讨论】:
上述代码适用的范围是用户不是超级管理员。 【参考方案1】:您无法在 Eloquent 模型的 boot
方法中访问当前经过身份验证的用户 - Auth 中间件此时尚未运行。
您应该做的是在您的RoleScope
的apply
方法中执行超级管理员检查。
【讨论】:
以上是关于在 Laravel 5.5 中根据用户角色应用全局范围的主要内容,如果未能解决你的问题,请参考以下文章