【问题标题】:How to get access to authorized user from api inside laravel eloquent model?如何从 laravel eloquent 模型中的 api 访问授权用户?
【发布时间】:2019-09-27 06:08:32
【问题描述】:

我有自定义属性,我必须只显示具有特定角色的授权用户:

protected $appends = ['count'];

public function getCountAttribute()
{
    $user = auth()->guard('api')->user();
    if($user && $user->hasAnyRole(['company', 'editor'])) {        
        $unmoderated = $this->jobs()->where('status', 0)->count();
        $active = $this->jobs()->where('status', 1)->count();
        $closed = $this->jobs()->where('status', 2)->count();
        return [
            'all' => $unmoderated + $active + $closed,
            'unmoderated' => $unmoderated,
            'active' => $active,
            'closed' => $closed
        ];
    }
}

此代码每次返回 null 结果。因为无法使用 Laravel Passport 从 API 中看到授权用户。默认情况下,我们可以通过添加中间件从控制器访问授权用户:

->middleware('auth:api')

但是我如何在模型中做到这一点?

【问题讨论】:

  • 您可以使用全局授权和全局请求方法,例如:auth()->user() 和 request()->user()

标签: laravel eloquent laravel-6


【解决方案1】:

你可以直接在辅助方法中传递守卫

$user = auth('api')->user();

或立面

use Illuminate\Support\Facades\Auth;
Auth::guard('api')->user();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 2014-10-12
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 2019-08-11
    相关资源
    最近更新 更多