登录后在会话中存储变量

时间:2016-10-07 09:03:08

标签: php laravel session-variables

我是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是注销前最后访问的页面。

我在哪里放置此代码,以便每次用户登录后都会执行该代码?

2 个答案:

答案 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_idAuth::user()->tenant_id全局可用(在所有控制器,视图,模型等中)所有记录用户。