Laravel passport не отвечает через postman

#php #laravel #postman #laravel-passport

#php #laravel #почтальон #laravel-passport

Вопрос:

пожалуйста, посмотрите приведенный ниже код UserController . Я пытаюсь использовать VUEJS через api.Итак, я создал маршруты для регистрации и входа в систему по api.php . Для тестирования я пытаюсь передать данные через postman и через http://localhost:8000/api/register с принятым приложением / json и типом содержимого с приложением / json. Я передаю данные через тело в виде данных формы. Проблема в том, что когда я пытаюсь отправить данные, postman непрерывно отправляет данные без ответа, и когда я отменил запрос, порт 8000 больше не работает. Поэтому я должен остановить сервер и запустить снова. Кто-нибудь может сказать мне, есть ли какие-либо ошибки в моем коде.Я использую laravel 5.7

 <?php

namespace AppHttpControllersApi;
use AppUser;
use IlluminateHttpRequest;
use AppHttpControllersController;
use GuzzleHttpClient;
use IlluminateSupportFacadesHash;

class UserController extends Controller
{
   public function  register(Request $request){
       $request->validate([
          'name' => 'required',
          'email'=> 'required',
          'password'=> 'required'
       ]);
       //add some cde that what happen if validation fils
       $newUser = User::firstOrNew(['email'=> $request->email]);
       $newUser->name = $request->name;
       $newUser->email =$request->email;
       $newUser->password = bcrypt($request->password);
       $newUser->save();

        $http = new Client;

        $response = $http->post(url('oauth/token'), [
            'form_params' => [
                'grant_type' => 'password',
                'client_id' => '2',
                'client_secret' => '9J0sU4Ctz5p3AUz7ROiv7jELnGrU5waepprqICyH',
                'username' => $request->email,
                'password' => $request->password,
                'scope' => '',
            ],
        ]);

        return response(['data' => json_decode((string)$response->getBody(), true) ]) ;

       }
   public function login(Request $request){
        $request->validate([

            'email'=> 'required',
            'password'=> 'required'
       ]);

       $user = User::where('email', $request->email)->first();

       if(!$user){
           return response(['status' => 'error' , 'message'=> 'user not found']);
       }
       if(Hash::check($request->password, $$user->password)){
            $http = new Client;

            $response = $http->post(url('oauth/token'), [
                'form_params' => [
                    'grant_type' => 'password',
                    'client_id' => '2',
                    'client_secret' => '9J0sU4Ctz5p3AUz7ROiv7jELnGrU5waepprqICyH',
                    'username' => $request->email,
                    'password' => $request->password,
                    'scope' => '',
                ],
            ]);

            return response(['data' => json_decode((string)$response->getBody(), true)]);
       }
   }
}
  

Ответ №1:

У меня почти такой же логин-код. Этот работает у меня:

 public function login(Route $route, Request $request)
{
    // validation stuff...

    $user = User::where('email', $request->email)->first();

    if ($user amp;amp; Hash::check($request->password, $user->password)) {
        $http = new Client();
        $response = $http->post(url('oauth/token'), array(
            'form_params' => array(
                'grant_type' => 'password',
                'client_id' => 2,
                'client_secret' => '...',
                'username' => $request['email'],
                'password' => $request['password']
            )));
        return json_decode($response->getBody(), true)['access_token'];
    } else {
        abort(401);
    }
}
  

И: Вы написали $$user во втором «если»…