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;)。
我已经检查过它是否将其保存在会话中,但似乎没有!知道是什么原因造成的吗?
这应该很容易调试。由于我无法重建你的场景,我为你推荐以下内容:
- 通过编写简单的单元测试来测试您的会话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']);
行
我正在尝试基于用户组进行身份验证,但会话无法保存!不知道为什么
这是我的部分代码。我检查了其他一切,它有效。实际上,它甚至在那之前就可以工作,但我正在实施 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;)。 我已经检查过它是否将其保存在会话中,但似乎没有!知道是什么原因造成的吗?
这应该很容易调试。由于我无法重建你的场景,我为你推荐以下内容:
- 通过编写简单的单元测试来测试您的会话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']);
行