laravel - 当后端和前端分为两个 git repos 和域时如何在 laravel 中处理用户身份验证
问题描述
我正在使用 laravel (v8) 开发一个更大的 Web 应用程序,因为项目可能会增长到预期的大小,所以我决定从一开始就将前端和后端拆分为两个不同的存储库。
现在我想为前端实现用户身份验证,我现在的问题是我应该如何处理这个问题。当前端和后端在同一个仓库中但像这样拆分时,我会知道从哪里开始,我似乎无法找到一种方法来解决它。
仅供参考:我已经为我的后端路由实现了基于令牌的身份验证
编辑:调整标题
解决方案
很简单,你可以对一个端点进行身份验证,我们称之为/api/login,这个端点将以json格式返回令牌、refresh_token和用户,然后只需通过javascript将令牌保存到本地存储或其他地方( cookie、localfile 等),然后当您进行 api 调用时,只需使用保存的令牌来传递 laravel api 中间件,使用 Laravel Passport 和 Laravel Responder 包检查此登录示例代码
public function login(LoginRequest $request)
{
$validated = $request->validated();//array valid data
$credentials = request(['email', 'password']);
try {
$response = $this->client->post("{$this->oauth_server}/oauth/token", [
'form_params' => [
'grant_type' => 'password',
'client_id' => config('auth.oauth_client_id'),
'client_secret' => config('auth.oauth_secret'),
'username' => $request->email,
'password' => $request->password,
],
]);
} catch (Exception $e) {
return responder()->error($e->getCode(), $e->getMessage())->respond();
}
return responder()->success([
"oauth" => json_decode((string)$response->getBody(), true)
])->respond();
}
推荐阅读
- matlab - 从 simulink 生成可执行文件,以便接受来自命令行的输入
- r - R - 使用 reshape 包中的强制转换来转换数据帧列表
- apache-kafka - 消费者不知道分区撤销
- python - 在 Ubuntu 18.04 上运行 sphinxcontrib-matlabdomain 的 test_data 示例时“导入模块失败”
- c# - 使用序列在 Fluent Migrator 中插入值
- c++ - 虽然循环迭代 C++ 中的太多元素
- python - 从 Python 中的主函数调用插入排序
- c# - 反序列化 XML 有空对象
- c# - Long 数据类型中的 BitShif
- java - 如何在 Spring Boot 中修复“嵌套异常是 java.lang.ArrayIndexOutOfBoundsException:索引 2 超出长度 2 的范围” - postgresql 项目