我试图在laravel下建立一个双重身份验证页面,为此,我添加了一个checkTotp方法,该方法验证用户是否已激活双重身份验证并将该用户重定向到相关页面。
问题是我没有被重定向,代码继续执行。
public function login(Request $request)
{
$this->validateLogin($request);
...
$this->checkTotp($request);
dd('after');
...
}
protected function checkTotp(Request $request)
{
$user = User::where('email', $request->get('email'))->first();
if (!is_null($user->totp_key)) {
$request->session()->put('user_id', $user->id);
return redirect('login/totp');
}
}
发生的事情是我输入了checkTotp方法,但是重定向不起作用。我的输出是dd('after')。我不明白为什么我没有被重定向。有人可以帮我吗?
昆汀
答案 0 :(得分:0)
checkTotp
函数返回一个重定向,但是您希望login
函数返回该重定向,以便将其传递给浏览器。您可能需要将重定向移动到主函数,然后让checkTOTP仅返回true / false。
public function login(Request $request)
{
$this->validateLogin($request);
...
if ($this->checkTotp($request)) return redirect('login/totp');
dd('after');
...
}
protected function checkTotp(Request $request)
{
$user = User::where('email', $request->get('email'))->first();
if (!is_null($user->totp_key)) {
$request->session()->put('user_id', $user->id);
return true;
}
return false;
}