2

嗨,我正在使用 laravel Sentinel 作为我的身份验证,我也在尝试使用 laravel 审计我得到“非静态方法 Cartalyst\Sentinel\Sentinel::getUser() 不应被静态调用”。

在我的用户模型中,我添加了一个静态函数 resolveId(),用于在 Laravel 审计“审计”表中添加 user_id

public static function resolveId(){
    return Sentinel::getUser()->getUserId();
    //return auth()->check() ? auth()->user()->getAuthIdentifier() : null;
}

当我尝试使用 \Sentinel::getUser() 时,我收到以下错误。

Non-static method Cartalyst\Sentinel\Sentinel::getUser() should not be called statically
4

3 回答 3

3

文档

安装软件包后,打开位于的 Laravel 配置文件config/app.php并添加以下行。在$aliases数组中为此包添加以下外观。

'Sentinel' => Cartalyst\Sentinel\Laravel\Facades\Sentinel::class,

然后只需将其添加到类的顶部:

use Sentinel;
于 2018-02-10T13:08:11.017 回答
0

将其use放在相关文件的顶部:

use Cartalyst\Sentinel\Laravel\Facades\Sentinel;
于 2018-02-10T13:06:29.677 回答
0

我知道@manikandan k寻求帮助的软件包版本是4.x5.x,虽然文档确实提到了Sentinel的用例,但它没有提供实际示例。

从版本6.x开始,Audit Resolvers文档就有这个用例,其中使用了Sentinel

我建议将解析器逻辑更新为以下内容:

return Sentinel::check() ? Sentinel::getUser()->getUserId() : null;

当用户未登录时,getUserId()这将阻止调用。null

于 2018-02-22T21:51:21.060 回答