Laravel Паспорт: сообщение без аутентификации при запросе информации о пользователе - PullRequest
1 голос
/ 18 марта 2020

Я хочу реализовать паспортную аутентификацию в Laravel. это функция регистра:

    public function register(Request $request)
    {
        $credentials = $request->only('name', 'email', 'password');

        $rules = [
            'name' => 'required|max:100',
            'email' => 'required|email|max:120|unique:users',
            'password' => 'required',
        ];

        $validator = Validator::make($credentials, $rules);
        if($validator->fails()) {
            return response()->json(['success'=> false, 'error'=> $validator->errors()]);
        }

        $user = User::create(['name' => $request->name, 'email' => $request->email, 'password' => bcrypt($request->password)]);

        if(Auth::attempt($credentials)){ 

         $user = Auth::guard('api')->user();
         $data['id'] = $user->id;
         $data['name'] = $user->name;
         $data['phone'] = $user->phone;
         $data['token'] = $user->createToken('API')->accessToken;

         return response()->json([
            'success'=> true,
            'data'=> $data
         ]);

     }
      return response()->json([
        'success'=> false,
         'data'=> $response
      ]);
     }

и это мои маршруты:

Route::post('register', 'Api\AuthController@register');
Route::middleware('auth:api')->get('/user', function (Request $request) {
    return response()->json($request->user());
});

Я хочу отобразить информацию о пользователе в почтальоне, и это заголовок запроса к URL: http://127.0.0.1: 8004 / api / user :

Accept:application/json
Authorization:Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxIiwianRpIjoiOThjYjM0YjkzOWJhMzczMDEwMGI0NmEyNTBhOGEzYTc5MTAyMjI1M2E2OTM0OGY0NGU1YWU4Njg3MzZkYmVlZjNlNzI1MDNiZTRhMjE5NGUiLCJpYXQiOjE1ODQ1NDczMDcsIm5iZiI6MTU4NDU0NzMwNywiZXhwIjoxNjE2MDgzMzA3LCJzdWIiOiI1NyIsInNjb3BlcyI6W119.GcqelFT2d3kKi8fR2vNbgMB1Fe_sQjrd2Mb3cRQLbS20IR_445bcTbcl17yKJrldboFktobeSIHx1GQENIzQbO0RStysmisiKuLk8eoXUvNVJq3t1bpZrjPBiNEGDRPqezq5VEsGhotVgbKRLK1gbVHwvE7mtSuGQTp9nIf6PEsmiJLsGmUJ0GdCmWXXLvJ0dBac1DZ_KauppDs_Lymx9SEXgzTDW60rpYrwHNbbaLfa6wdW3M5tUZM3vMRcKhCgYitvK_DfttKHcWqvEX8_lZT0h5GcQSsori_K8Lj_ynKfjrTfbodUKzT4kDZ8z-RnE4-SgG75LWDeqcpDRhuDmiL0KTIzwtrNFtU0NEo-v0t6dTkAuJCl1ZnTT72sLZoI6rsTPHtNKIDxwN9VrXiTU5pxGEc6ju5e30NQnkjBRjMRsVIcCHR-WohObuWkZOGRq-RP5on3oiLe2VGk0PENXXziMX3D5urpLWK3WR-ZY0Bz3fKitgE8TFaT1cOMSyK6d3zskUEdMjDyLCxbS7vKhmNuAy2moOj7f7DI9yr8XNeyF00WJKw0WJi76XX_Y06O-VtNhqzgeEyu6QM6qRivpBBcj-WkdbSTmveNZlSqAesLm6WD8qWKc9FR-S_41fCc2qLEY_VOotSA8tOYASVKpdsvj2liTbbMH9905HQJe-o
Content-Type:application/json

но результат всегда:

{"message": "Не аутентифицирован." }

Как я могу отображать информацию о пользователе? заранее спасибо

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

Изменить

Auth::attempt($credentials)

на

Auth::guard('api')->attempt($credentials)
0 голосов
/ 18 марта 2020

ваш api. php файл типа

<?php

use Illuminate\Http\Request;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});
Route::group(['middleware' => 'auth:api'], function () {
    Route::post('register', 'your_controller_name@register');
 });

и запись вашей функции регистра в контроллере как

public function register(Request $request)
{
    $credentials = $request->only('name', 'email', 'password');

    $rules = [
        'name' => 'required|max:100',
        'email' => 'required|email|max:120|unique:users',
        'password' => 'required',
    ];

    $validator = Validator::make($credentials, $rules);
    if($validator->fails()) {
        return response()->json(['success'=> false, 'error'=> $validator->errors()]);
    }

    $user = User::create(['name' => $request->name, 'email' => $request->email, 'password' => bcrypt($request->password)]);

    if(Auth::attempt($credentials)){ 

     $user = Auth::guard('api')->user();
     $data['id'] = $user->id;
     $data['name'] = $user->name;
     $data['phone'] = $user->phone;
     $data['token'] = $user->createToken('API')->accessToken;

     return response()->json([
        'success'=> true,
        'data'=> $data
     ]);

 }
  return response()->json([
    'success'=> false,
     'data'=> $response
  ]);
 }
...