Когда данные, отправленные на БД через порт Почтальон, выходят из строя, и этот порт не работает в дальнейшем. - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь получить паспорт laravel для аутентификации.И после прочтения его документации я кодировал ниже строки кода, и я пытаюсь передать данные, как на картинке, через почтальона:

Please click here to see the image

<?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 больше не отвечает.Может кто-нибудь, пожалуйста, скажите мне, что здесь не так, спасибо.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Вы уже проверили базу данных, что там?вероятно есть запись $ request-> email.Не пишите переменные в одинарных кавычках, пишите так

$user = User::firstOrNew(['email' => $request->email]);

или

 $user = User::firstOrNew(['email' => "$request->email"]);
0 голосов
/ 07 февраля 2019

Позвольте мне начать с:

О почтальоне. Вы используете HTTP POST и не используете тело, вместо этого вы отправляете параметры в URL.Зачем использовать параметры вместо отправки их в теле?(По коду стека вы отправляете контент внутри тела).

Удалите проверку в методе, если вы хотите проверить форму, вы можете лучше организовать код, если создадите набор проверок в другом месте.

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).Если вы собираетесь запросить собственный маршрут, почему вы используете жрет?Вы можете вызывать маршруты внутри (даже если нет необходимости, если вам нужна функциональность из вашего собственного кода, вы можете просто вызвать ее)

"Когда я проверяю, данные базы данных были добавлены в таблицу, но запросотправка не будет остановлена, пока я не остановлюсь. "

Скорее всего из-за того, что вы делаете HTTP-запрос, как я уже говорил выше, просто вызовите свои собственные функции кода внутри и уберите жрет.

...