我是Laravel框架的新手,我需要你的帮助,伙计们!
我现在正在尝试的是在登录后立即在会话中添加新变量。 此变量取决于当时登录的用户。 我现在拥有的是它,它起作用但不是我真正想要的:
$loggedUserId = Auth::id();
$getTenantId = DB::table('users')->select('tenant_id')->where('id', $loggedUserId)->get();
$tenantId = $getTenantId[0]->tenant_id;
Session::put('tenant_id', $tenantId);
问题是这段代码存在于home.blade.php中,我不希望这样,因为如果,我想说,我想创建一个系统,当用户注销并再次登录后出现的页面时login是注销前最后访问的页面。
我在哪里放置此代码,以便每次用户登录后都会执行该代码?
答案 0 :(得分:1)
要在用户通过身份验证后立即执行操作,您可以使用Laravel的事件。以下是解释完全如何订阅您所关注事件的文档:https://laravel.com/docs/5.3/events#event-subscribers
答案 1 :(得分:0)
Create middleware并将代码放在那里。然后将中间件添加到web
列表(app\Http\Kernel.php
)或add middleware to a route group。此外,您可以使用一行代码执行相同的操作:
session()->put('tenant_id', auth()->user()->tenant_id);
最后,在你的情况下,你甚至不需要做所有这些事情,因为auth()->user()->tenant_id
和Auth::user()->tenant_id
全局可用(在所有控制器,视图,模型等中)所有记录用户。