Функция регистрации для JWT дает мне другую ошибку json в Laravel. Как написать функцию регистрации? - PullRequest
0 голосов
/ 17 июня 2020

Это функции регистрации и входа, а также api. php для маршрутизации. Регистрация и логин находятся в AuthController . Когда я отправляю запрос через Postman для регистрации, я получаю эту ошибку. Есть ли ошибка в коде или мне следует просмотреть заголовки в Postman?

{
    "message": "Unauthenticated."
}
public function register(Request $request)
{
    $user = User::create([
        'name' => $request->name,
        'email' => $request->email,
        'password' => bcrypt($request->password),
    ]);

    $token = $this->guard()->login($user);

    return $this->respondWithToken($token);
}

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

    if ($token = $this->guard()->attempt($credentials)) {
        return $this->respondWithToken($token);
    }

    return response()->json(['error' => 'Unauthorized'], 401);
}

Вот мой routes / api. php файл.

Route::group([

'middleware' => 'api',
'prefix' => 'auth'

], функция ($ router) {

Route::post('login', 'AuthController@login');
Route::post('logout', 'AuthController@logout');
Route::post('refresh', 'AuthController@refresh');
Route::post('register', 'AuthController@register');
Route::post('me', 'AuthController@me');

});

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Решено. Проблема заключалась в функции __ construct () в AuthController. php В промежуточном программном обеспечении была просто маршрутизация входа. Когда я добавил регистр, он работал.

public function __construct()
{
    $this->middleware('auth:api', ['except' => ['login', 'register']]);
}
0 голосов
/ 17 июня 2020

Я предполагаю, что вы используете этот jwt-auth

<?php

  namespace App\Http\Controllers;

  use Illuminate\Http\Request;
  use Illuminate\Support\Facades\Auth;
  use App\Http\Controllers\Controller;

  class AuthController extends Controller
  {
/**
 * Create a new AuthController instance.
 *
 * @return void
 */
public function __construct()
{
    $this->middleware('auth:api', ['except' => ['login']]);
}

/**
 * Get a JWT token via given credentials.
 *
 * @param  \Illuminate\Http\Request  $request
 *
 * @return \Illuminate\Http\JsonResponse
 */
public function login(Request $request)
{
    $credentials = $request->only('email', 'password');

    if ($token = $this->guard('api')->attempt($credentials)) {
        return $this->respondWithToken($token);
    }

    return response()->json(['error' => 'Unauthorized'], 401);
}

/**
 * Get the authenticated User
 *
 * @return \Illuminate\Http\JsonResponse
 */
public function me()
{
    return response()->json($this->guard('api')->user());
}

/**
 * Log the user out (Invalidate the token)
 *
 * @return \Illuminate\Http\JsonResponse
 */
public function logout()
{
    $this->guard('api')->logout();

    return response()->json(['message' => 'Successfully logged out']);
}

/**
 * Refresh a token.
 *
 * @return \Illuminate\Http\JsonResponse
 */
public function refresh()
{
    return $this->respondWithToken($this->guard('api')->refresh());
}

/**
 * Get the token array structure.
 *
 * @param  string $token
 *
 * @return \Illuminate\Http\JsonResponse
 */
protected function respondWithToken($token)
{
    return response()->json([
        'access_token' => $token,
        'token_type' => 'bearer',
        'expires_in' => $this->guard('api')->factory()->getTTL() * 60
    ]);
}

/**
 * Get the guard to be used during authentication.
 *
 * @return \Illuminate\Contracts\Auth\Guard
 */
public function guard()
{
    return Auth::guard('api');
}
}

И этот контроллер у меня работает. Обратите внимание, что я заменяю guard() на guard('api')

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