【问题标题】:How to append variable to Auth::user() and then save it and cache it?如何将变量附加到 Auth::user() 然后保存并缓存它?
【发布时间】:2018-11-19 06:44:09
【问题描述】:

我有下一个问题:在 Laravel 中使用 Auth Passport 提供程序对用户进行身份验证后,我得到 Auth::user()。然后我尝试将变量附加到它。

 $role = Input::get('role');
 $user = Auth::user();
 $user->role = $role;
 Auth::setUser($user);`

如果在当前控制器和路由中使用新的$user 变量效果很好,但如果我尝试在另一个路由中获取Auth::user(),它会返回旧值。 如何将变量附加到Auth::user(),然后保存并缓存它? 我想用“setUser”方法更改Auth::user(),然后将其缓存以用于所有其他路由。我该如何解决我的问题?

【问题讨论】:

    标签: php laravel authentication oauth laravel-passport


    【解决方案1】:

    Auth::user() 在其他地方返回旧值的原因是Auth::user() 是一个身份验证系统,它接受用户凭据验证,然后将它们与User model(又名默认 laravel 身份验证)进行比较

    使用setUser,您只是在新建实例时设置了一些属性,这就是为什么在其他地方您会获得从User model 提取的旧值,因为在不同的地方setUser 未设置。

    【讨论】:

    • 谢谢!我注意到下次它使用用户模型。但是,可能有一些方法可以解决它并使用带有全局新变量的 Auth::user() 组件。可能是其他一些有效的构造,例如 BaseController 中的“_construct”。还有问题 Laravel 如何将 Auth::user() 存储在缓存中、会话中或在哪里?而在女巫时间它存储值?
    • @T.Abdullaev 你不需要改变Auth()
    【解决方案2】:

    您可以为此在用户模型上使用附加功能,

    例如,

    protected $appends = [ 'my_role' => 1];
    

    【讨论】:

      猜你喜欢
      • 2012-05-03
      • 1970-01-01
      • 2013-07-07
      • 1970-01-01
      • 1970-01-01
      • 2019-04-09
      • 2016-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多