簡體   English   中英

登錄后在會話中存儲變量

[英]Store variable in session after login

我是 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 中,我不想要那樣,因為如果,比方說,我想制作一個系統,當用戶注銷並再次登錄時,登錄后出現的頁面是登出前最后訪問的頁面。

我把這段代碼放在哪里,以便每次用戶登錄后都會執行?

要在用戶通過身份驗證后立即執行操作,您可以使用 Laravel 的事件。 這里的文檔准確地解釋如何訂閱您所關注的事件: https : //laravel.com/docs/5.3/events#event-subscribers

創建中間件並將代碼放在那里。 然后將中間件添加到web列表 ( app\\Http\\Kernel.php ) 或將中間件添加到路由組 此外,您可以只用一行代碼執行相同的操作:

session()->put('tenant_id', auth()->user()->tenant_id);

最后,在您的情況下,您甚至不需要做所有這些事情,因為auth()->user()->tenant_idAuth::user()->tenant_id是全局可用的(在所有控制器、視圖、模型中等)適用於所有登錄用戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM