ajax - Laravel Ajax登录,成功后重定向到上一个url
问题描述
假设我有一个页面 A 正在使用 auth 中间件。由于没有登录,它被重定向到登录页面。
在登录页面上,我有自定义 ajax 登录系统。成功登录后,我想重定向到具有相同 url 的页面 A,以便可以完成操作。
我的登录代码是这样的:
public function postLogin(Request $request)
{
$auth = false;
$errors = [];
$inputs = $request->all();
$validator = $this->validator($inputs);
if ($validator->fails()) {
return response()->json([
'auth' => false,
'intended' => URL::previous(),
'errors' => $validator->errors()
]);
}
$user = User::where('email', $request->get('email'))->first();
if ($user && $user->is_active == 0) {
$errors[] = "This account has been deactivated";
} else if ($user && $user->confirm_token != null) {
$errors[] = "Please verify your email in order to login";
} else {
$credentials = ['email' => $request->get('email'), 'password' => $request->get('password'), 'is_active' => 1];
if (Auth::attempt($credentials, $request->has('remember'))) {
$auth = true;
} else {
$errors[] = "Email/Password combination not correct";
}
}
if ($request->ajax()) {
return response()->json([
'auth' => $auth,
'intended' => URL::previous(),
'errors' => $errors
]);
}
return redirect()->intended(URL::route('dashboard'));
}
我正在尝试通过 url()->previous() 获取以前的 url,但它返回登录页面 url。有人可以指导我吗?任何改进/帮助将不胜感激。
我正在使用 Laravel 5.4
解决方案
我在这里有一个非常相似的问题:Ajax Auth redirect on Laravel 5.6
正如@aimme ( https://stackoverflow.com/users/1409707/aimme ) 所指出的,Ajax 调用是无状态的,所以基本上你不能与后端交互。
他的建议和我的建议是传递要重定向到的预期页面的 URL,或者在您的情况下,您可以通过 post 参数传递给它,例如:
return response()->json([
'auth' => false,
'intended' => $request->intended,
'errors' => $validator->errors()
]);
推荐阅读
- c++ - 尽管没有错误并且完全执行,但 C++ 程序中没有输出
- java - 从 Android 中的 Firestore 获取过去 24 小时的文档
- python - 熊猫根据重复的列和一个相似的列删除重复项
- .net - .Net Core linq where with multiple List
and string - python - 使用 pandas 计算收入流失
- c# - EF Core 迁移(代码优先):如何添加新的非空列并使用不基于其他字段数据的唯一值填充现有记录?
- android - 添加多个 JSIModule React-Native Android
- flutter - Flutter:仅在某些页面中显示 appbar
- json - 如何有效地加载和处理包含不同的、不断发展的模式的 JSON 文件
- vue.js - 在 vps 上使用符号链接部署 vue js 总是错误 npm build