如何将变量附加到 Auth::user() 然后保存并缓存它?

Posted

技术标签:

【中文标题】如何将变量附加到 Auth::user() 然后保存并缓存它?【英文标题】:How to append variable to Auth::user() and then save it and cache it? 【发布时间】: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(),然后将其缓存以用于所有其他路由。我该如何解决我的问题?

【问题讨论】:

【参考方案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];

【讨论】:

以上是关于如何将变量附加到 Auth::user() 然后保存并缓存它?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 在附加到 DOM 之前从元素中生成变量

如何将变量附加到 Graphql 上下文?

如何将多个 filter() 查询附加到一个变量中

如何将html代码附加到iphone中的NSString变量

如何将字符串附加到R中的变量名子集?

Python Flask将所有字符串附加到DOM