我有一个Laravel Web应用程序(website.nl)和一个Laravel API(api.website.nl)。
当用户使用网站上的登录表单登录时。向API发出了发布请求。登录请求成功后,将以JSON字符串的形式发送回令牌AND用户对象。登录方法如下所示。
public function login(Request $request)
{
$email = $request->input('email');
$password = $request->input('password');
$response = $this->client->request('POST', self::$apiRootUrl . '/login', [
'headers' => [
'Accept' => 'application/json',
],
'form_params' => [
'email' => $email,
'password' => $password
],
]);
$result = json_decode($response->getBody()->getContents());
if (isset($result->success->token))
{
$user = User::create([
'id' => $result->success->user->id,
'name' => $result->success->user->name,
'email' => $result->success->user->email,
'password' => $password
]);
Auth::login($user);
$this->apiToken = $result->success->token;
return $this->sendLoginResponse($request);
}
return $this->sendFailedLoginResponse($request);
}
在我希望此登录功能尽可能愚蠢的地方,这意味着让API弄清楚这是否是有效的登录请求。此方法仅传递参数。
主网站应该没有数据库。它仅使用API登录,获取令牌,并使用该令牌进行请求以收集数据,以供用户在主网站的仪表板上查看。
基于这个原因,我的问题是:如何存储从API检索到的User对象,使其像Eloquent模型一样可以查询。但无需将其存储在数据库中。同样,主要网站不需要数据库。它仅与API进行数据通信。
我希望这个问题有意义,否则请询问更多细节。
我不想在主网站上创建带有迁移的重复数据库。因为那是.api
子域的工作。同样,所有模型都在会话中使用。永远不会存储更长的时间,因为它也位于.api
子域的存储方法中。
答案 0 :(得分:0)
这将需要您为Eloquent编写自己的语法,Eloquent是您正在使用的API的ActiveRecord实现。 从理论上讲这是可能的,实际上,这是很多工作。
在这里了解Laravel如何实现其当前支持的数据库类型。 https://laravel.com/api/5.8/Illuminate/Database/Schema/Grammars.html