Передав аутентификацию laravel API в группе промежуточного программного обеспечения для тестирования в Postman [решено] - PullRequest
0 голосов
/ 11 июля 2019

Я хочу проверить API на laravel, который определен в группе промежуточного программного обеспечения.

Route::group(['middleware' => 'auth:api'], function () {
    Route::post('/city/rating', 'API\HomeController@post_city_rating');

Как это сделать? Я использовал хитрый метод, который отправляет куки из браузера, который вошел в систему, но он не работает. Тест почтальона API -> Управление Cookies

XSRF-ЗНАК = eyJpdiI6Ik1pTVwvVzhNaEp4ZGQrVndoS25GSEVnPT0iLCJ2YWx1ZSI6Ikk2UFRwaVwvcmJcL0RoajNCUnFkZ2ltWWNWcUdyV0puQml6VXRsUkdweTdkUTJnZ1lTWGdWdnlWaEM5RUw2VmxpZyIsIm1hYyI6IjY2NjY5MzEzMzY3MzFhODYyNmQ5MTlkYjI0MDQzOWVlODcxYTgyODcwMmY1NGVkNjAyYzE3YTMzNTVjNDFhMTYifQ% 3D% 3D; Путь = /; .. Домен = *** ком; Истекает = Четверг, 11 июля 2019 10:20:38 GMT;

laravel_session = eyJpdiI6ImVSZTNhOWV4Y1ZFK2NEXC9lN0JYK2dnPT0iLCJ2YWx1ZSI6Im83cHVlZFkwczJBb2VCelhPbmY0c2ttUVdpWmx5WU0xVDBkWjhWRk5YUEFXXC9yZG10elBkSUljeE9WK1JsXC9WKyIsIm1hYyI6IjYxZGNjMjlmYjRjZWNjMDcxMTZhNzQ5MDJiYmFmYzM1YjA5MWJhMGQ0MzI5MzUyM2M4NzkyYzJlZjg5MTQ0OWUifQ% 3D% 3D; Путь = /; домен = safanci.com; HttpOnly; Истекает = чт, 11 июля 2019 г. 10:25:57 GMT;

Я использую тест api почтальона и пытаюсь использовать менеджер файлов cookie, но он все еще не работает.

И попытка добавить ключ и значение заголовка тоже не работает.

KEY = XSRF-TOKEN
Value = eyJpdiI6Ik1pTVwvVzhNaEp4ZGQrVndoS25GSEVnPT0iLCJ2YWx1ZSI6Ikk2UFRwaVwvcmJcL0RoajNCUnFkZ2ltWWNWcUdyV0puQml6VXRsUkdweTdkUTJnZ1lTWGdWdnlWaEM5RUw2VmxpZyIsIm1hYyI6IjY2NjY5MzEzMzY3MzFhODYyNmQ5MTlkYjI0MDQzOWVlODcxYTgyODcwMmY1NGVkNjAyYzE3YTMzNTVjNDFhMTYifQ%3D%3D

api.php

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

ничего особенного в функции post_city_rating

public function post_city_rating(Request $request){
        $location_review = LocationReview::where('user_id','=',Auth::user()->id)->where('location_id','=',$request->location)->first();

        if(empty($location_review)){
            $location_review = new LocationReview();
            $location_review->id = $this->newIDLocationReview();
        }
        $location_review->user_id = Auth::user()->id;
        $location_review->location_id = $request->location;
        $location_review->rating = $request->rating;
        $location_review->save();

        return response()->json([
            'status' => "success",
        ]);
    }

ошибка почтальона

"Маршрут [логин] не определен."

GET Data empty
POST Data empty
Files empty
Cookies
XSRF-TOKEN  
"eyJpdiI6InFZcEFqRFBJcmM3RzdGd2daY1p3U1E9PSIsInZhbHVlIjoiT0JuUDRWaTdkNnpUYXJ6U1hGVG93eE03SFdHMFIyOTBPbWo1OWtlMTd4dlNRRlFNSlZKaVpNeVBMXC9abURCcVQiLCJtYWMiOiJmMWI1NWI4YzIzYWU1NDA1YjI4OWQ4MDMyNWM3MDIxOWRmYTM1MzBiNDVjMzQxZjU4OWQxOGFhYmM5MjQ4NTY3In0="
laravel_session 
"eyJpdiI6ImVSZTNhOWV4Y1ZFK2NEXC9lN0JYK2dnPT0iLCJ2YWx1ZSI6Im83cHVlZFkwczJBb2VCelhPbmY0c2ttUVdpWmx5WU0xVDBkWjhWRk5YUEFXXC9yZG10elBkSUljeE9WK1JsXC9WKyIsIm1hYyI6IjYxZGNjMjlmYjRjZWNjMDcxMTZhNzQ5MDJiYmFmYzM1YjA5MWJhMGQ0MzI5MzUyM2M4NzkyYzJlZjg5MTQ0OWUifQ=="
Session empty

Я не знаю, почему laravel вернул разные отправленные мной файлы cookie. Кажется, laravel хочет, чтобы мы перенаправили на форму входа, но это произошло на почтальоне. (Поправьте меня если я не прав)

Ps. Может быть, потому что я получил куки из веб-маршрутизации вместо API-маршрутизации. Это виновник? Как этого добиться? Спасибо.

1 Ответ

1 голос
/ 11 июля 2019

Неправильная обработка аутентификации с помощью сеанса в API. Чтобы объявить маршрут API, вы должны использовать соответствующий файл api.php, расположенный в папке маршрутов. Как указано в официальной документации Аутентификация API дескриптора Laravel с токеном, который необходимо вставить в запрос заголовка.

Пример:

$response = $client->request('POST', '/api/user', [
    'headers' => [
        'Authorization' => 'Bearer '.$token, //  Here you've to insert your token
        'Accept' => 'application/json',
    ],
]);

Чтобы протестировать свои API с Почтальоном, вы должны установить токен Authorization, как показано на следующем рисунке:

enter image description here

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