Неопределенная переменная: токен в тесте Почтовика Laravel. - PullRequest
0 голосов
/ 28 апреля 2019

Я написал API в Laravel 5.8 для входа и регистрации пользователя.

Я использую JWTAuth в Laravel 5.8. Когда я тестировал Логин на Почтальоне, он выдал ошибку, неопределенная переменная: токен. Я пытался написать API для регистрации, когда я тестировал его, он работал отлично. Основываясь на том, что я видел в сети, я попытался добавить \ Illuminate \ View \ Middleware \ ShareErrorsFromSession :: class к ядру, но все равно та же ошибка.

LoginController

    public function login(Request $request)
    {
        $credentials = $request->json()->all();

        try
        {
            if(! $token == JWTAuth::attempt($credentials))
            {
                return response()->json(['error' => 'invalid_credentials'], 400);
            }
        }
        catch(JWTException $e)
        {
            return response()->json(['error' => 'could_not_create_token'], 500);
        }
        return response()->json(compact('token'));

    }   

    public function register(Request $request)
    {
        $validator = Validator::make($request->json()->all() , [
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6',
            'username' => 'required|string|max:255',
        ]);

        if($validator->fails()){
            return response()->json($validator->errors()->toJson(), 400);
        }
        $user = User::create([
            'name' => $request->json()->get('name'),
            'email' => $request->json()->get('email'),
            'password' => Hash::make($request->json()->get('password')),
            'username' => $request->json()->get('username'),
        ]);

        $token = JWTAuth::fromUser($user);

        return response()->json(compact('user', 'token'), 201);
    }

api.php

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

Route::post('register', 'UserController@register');
Route::post('login', 'UserController@login');
Route::get('profile', 'UserController@getAuthenticatedUser');

Я ожидал успеха, но он выдал ошибку:

ErrorException: неопределенная переменная: токен в файле C: \ xampp \ htdocs \ laravelapi \ app \ Http \ Controllers \ UserController.php в строке 52

Это моя строка 52:

if (! $ Token == JWTAuth :: попытки ($ учетные данные))

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

Вы должны использовать оператор присваивания и не равно == :

$token = JWTAuth::attempt($credentials))

Также в функции login вы должны сгенерироватьтокен от пользователя для возврата

 public function login(Request $request)
        {
            $credentials = $request->json()->all();

            try
            {
                if(! $token = JWTAuth::attempt($credentials))
                {
                    return response()->json(['error' => 'invalid_credentials'], 400);
                } else {
                    // Generate token from user 
                    $token = JWTAuth::attempt($credentials);
                    return response()->json(compact('token'));
                }
            }
            catch(JWTException $e)
            {
                return response()->json(['error' => 'could_not_create_token'], 500);
            }
        } 
0 голосов
/ 28 апреля 2019

определить токен $ перед строкой 52

$token = null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...