php - 双重认证连接无法重定向
问题描述
我正在尝试在 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')。我不明白为什么我没有被重定向。有人能帮我吗?
昆汀
解决方案
该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;
}
推荐阅读
- java - 如何记录没有任何上下文的不安全请求?
- java - 在本地重现和解决 Android java.lang.unsatisfiedLinkError
- mysql - mysql 不适用于 AWS linux 实例?
- ios - 以编程方式添加“间距到最近的邻居”约束
- sql - 如何将子组转置或转置为单行?
- javascript - 节目带复选框 jquery
- elasticsearch - 如何在不影响性能、可扩展性的情况下获得更好的相关性并避免 Elasticsearch 的分片效应
- xamarin.forms - 带有 CrossMediaManager 的 Xamarin 项目无法播放本地网站无法播放
- batch-file - 如何传递运行时参数以从批处理文件启动 exe
- excel - 如何迭代地将一张纸中的每一列复制到不同的纸上