LARAVEL,SESSION 未保存(AttemptToAuthenticate)

LARAVEL, SESSION doesn't get saved (AttemptToAuthenticate)

我正在尝试基于用户组进行身份验证,但会话无法保存!不知道为什么

这是我的部分代码。我检查了其他一切,它有效。实际上,它甚至在那之前就可以工作,但我正在实施 stripe 并且我更新了作曲家(这可能会重置此处的设置),并且从那以后它就无法工作了。

我重新实现了我的旧代码(以前有效),但出了点问题。 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;)。 我已经检查过它是否将其保存在会话中,但似乎没有!知道是什么原因造成的吗?

这应该很容易调试。由于我无法重建你的场景,我为你推荐以下内容:

  1. 通过编写简单的单元测试来测试您的会话r/w:
/** @test */
public function session_test()
{
    session(['utype' => 'ENT']);
    
    $session = Session::get('utype');
    
    $this->assertEquals('ENT', $session);
}
  1. 假设您有用户模型和工厂,继续进行简单的身份验证测试:
/** @test */
public function user_can_authenticate()
{
    $user = User::factory()->create();

    auth()->login($user);

    $this->assertAuthenticatedAs($user);
}
  1. $this->guard->attempt 的某处设置断点并启动调试器。我的猜测是,您甚至没有达到 session(['utype'=>'xxx']);