我想laravel护照进行身份验证。而看完后的文档,我的编码下面的代码行,我试图通过像邮递员通过在图像数据:
<?php
namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\User;
use GuzzleHttp\Client;
class AuthController extends Controller
{
public function register(Request $request){
$validationData = $request->validate([
'email' => 'required',
'name' => 'required',
'password' => 'required'
]);
$user = User::firstOrNew(['email' => '$request->email']);
$user->name = $request->name;
$user->email = $request->email;
$user->password = md5($request->password);
$user->save();
$http = new Client;
$response = $http->post(url('oauth/token'), [
'form_params' => [
'grant_type' => 'password',
'client_id' => '2',
'client_secret' => 'WXXWDxYHfIPu5fbkSSTCnw56Gk0VJ271KDEd9NKr',
'email' => $request->email,
'password' => $request->password,
'scope' =>'',
],
]);
return response (['data' => json_decode((string) $response->getBody(), true)]);
}
public function login(){
}
}
当我检查数据库中的数据已发布到表中,但该请求没有停止,直到我采空了。然后,当我尝试重新发送请求时,它抛出错误说电子邮件几乎存在。我知道它的好。但端口8016这么想的反应了。谁能告诉我什么是错在这里,谢谢。
请允许我开始:
关于邮递员..你正在使用HTTP POST而不是使用身体,而不是你发送的网址参数。为什么用身体把他们的参数呢? (在狂饮的代码,你要发送的体中的内容)。
剥去验证方法中,如果你正在寻找验证表单,您可以组织代码更好,如果你创建一组验证的其他地方。
https://laravel.com/docs/5.7/validation#creating-form-requests
请停止使用MD5,你有内Laravel密钥,因此哈希它。
\Hash::make($request->password); instead of $user->password = md5($request->password);
如果您的请求到您的项目将会使外部URL的请求时,需要考虑到如果由于某种原因(500,404,403)请求失败会发生什么。如果你要申请自己的路线,你为什么使用狂饮?您可以在内部呼叫路由(甚至尽管世界上没有必要,如果你需要从自己的代码的功能,你可以称呼它)
“当我检查了数据库中的数据已经被公布到表中,但该请求发送不会停止utill我停下来。”
最有可能的,因为你正在做的HTTP请求,正如我上面所说,只是叫自己的代码函数内部,并采取了狂饮。
你已经检查了数据库呢?可能有一个创纪录的$请求 - >电子邮件。 Сannot写变量在单引号写了这么
$user = User::firstOrNew(['email' => $request->email]);
要么
$user = User::firstOrNew(['email' => "$request->email"]);