php - 用户登录并通过身份验证后的 Laravel 重定向逻辑
问题描述
在 Laravel 中,当用户成功填写登录表单时,authenticated
会在LoginController
. 我的特定应用程序在用户登录后会点击此方法,但我需要添加一个额外的步骤来让用户登录到外部 API 调用。如果该 API 调用失败,我需要将用户重定向回上一个屏幕并删除他们的身份验证。
protected function authenticated(Request $request, User $user)
{
Log::info('authenticated');
//at this point user is authenticated via laravel
//now I need to login to a third party api
$call = app('api')->call('user.login', []
)->content();
//did a successful login token get returned?
if (isset($call['token']) && isset($call['user'])) {
session(['token'=>$call['token']]);
} else {
//login to third party api failed,
//so I need to redirect user back
Log::info('failed login');
return redirect()->back(); //send user back to login screen
}
}
似乎以下逻辑没有成功重定向,而是立即转到handle
. RedirectIfAuthenticatedController
我看到记录的“登录失败”消息,但它永远不会将我重定向回来或命中return redirect()->back()
线路。
我觉得为这个逻辑设置一个中间件有点不必要。我试图找到 Laravel 内置的帮助方法,让我在authenticated
被击中后调用,但我无法弄清楚。
我可以让它工作的唯一方法是
Auth::logout();
在else
语句中添加。这是处理这种逻辑的正确方法吗?
解决方案
推荐阅读
- javascript - 删除 select2 no data found 文本
- sql - 使用每个 ID 的代码频率创建列
- md5 - Keycloak 密码哈希算法 md5
- html - Bootstrap 4 Scrollspy“位置:相对”要求
- r - 如何在 R 中将分类变量转换为连续变量?
- android - 如何取消在 withContext 中运行的协程?
- javascript - JSONP http请求在Angular中给出404
- sql - 根据范围聚合列值
- xml - 使用过滤器解析大型 XML 数据集
- visual-studio-code - 还要定义标准属性“grid-row”以实现兼容性