我正在嘗試根據用戶組進行身份驗證,但會話不會被保存!不知道為什么
這是我的代碼的一部分。我檢查了其他所有內容,并且可以正常作業。實際上,它甚至在那之前就可以作業,但是我正在實作條帶并且我更新了作曲家(這可能會重置此處的設定),并且因為它無法作業。
我重新實作了我的舊代碼(以前有效)但出了點問題。Fortify\src\actions\AttemptToAuthenticate
public function handle($request, $next)
{
if (Fortify::$authenticateUsingCallback) {
return $this->handleUsingCustomCallback($request, $next);
}
if ($this->guard->attempt(
$request->only(Fortify::username(), 'password'),
$request->boolean('remember'))
) {
if(Auth::user()->utype === 'ADM')
{
session(['utype'=>'ADM']);
}
else if(Auth::user()->utype === 'USR')
{
session(['utype'=>'USR']);
return redirect(RouteServiceProvider::HOME);
}
else if(Auth::user()->utype === 'ENT')
{
session(['utype'=>'ENT']);
}
return $next($request);
}
$this->throwFailedAuthenticationException($request);
}
注意:我還酌情參考了 Auth(使用 Illuminate\Support\Facades\Auth;)和 RouteServiceProvider(使用 App\Providers\RouteServiceProvider;)。我檢查了它是否將其保存在會話中,但似乎并非如此!有什么想法可能導致它嗎?
uj5u.com熱心網友回復:
這應該很容易除錯。由于我無法重建您的場景,因此我為您推薦以下內容:
- 通過撰寫一個簡單的單元測驗來測驗您的會話 r/w:
/** @test */
public function session_test()
{
session(['utype' => 'ENT']);
$session = Session::get('utype');
$this->assertEquals('ENT', $session);
}
- 假設你有一個用戶模型和工廠,繼續一個簡單的身份驗證測驗:
/** @test */
public function user_can_authenticate()
{
$user = User::factory()->create();
auth()->login($user);
$this->assertAuthenticatedAs($user);
}
- 在某處設定斷點
$this->guard->attempt并啟動除錯器。我的猜測是,你甚至達不到session(['utype'=>'xxx']);線
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/473346.html
上一篇:.NetCore中的JWT驗證
