При обращении Axios к контроллеру генерируется 500 (Внутренняя ошибка сервера) - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь реализовать функцию регистрации в моем контроллере, но когда я выполняю действие tryRegister, браузер записывает 500 (Внутренняя ошибка сервера). Поэтому я удалил все из функции регистра и просто попытался вернуть простую строку в качестве ответа. И странным было то, что он все еще генерирует эту ошибку. Поэтому, поскольку вход в систему уже работал, я попытался сделать ответ на сообщение в функции входа в систему и вызвать его с помощью действия tryLogin, но сумасшедшая вещь заключается в том, что функция входа в систему отвечает просто отлично и регистрирует «вход в систему»? Что я делаю неправильно? Это как-то связано с параметром запроса? Потому что это единственное различие между этими двумя функциями.

Также я новичок в серверной разработке, и я действительно пытаюсь понять это.

Действия Vuex

import axios from "axios";

export default {
    tryRegister(context, credentials) {
        context.commit("login");
        return new Promise((resolve, reject) => {
            axios
                .post("/api/auth/register", credentials)
                .then(response => {
                    console.log(response.data);
                    context.commit("loginSucces", response.data);
                    resolve(response.data);
                })
                .catch(error => {
                    console.log(error.response);
                    reject(error);
                });
        });
    },
    tryLogin(context, credentials) {
        context.commit("login");
        return new Promise((resolve, reject) => {
            axios
                .post("/api/auth/login", credentials)
                .then(response => {
                    console.log(response.data);
                    context.commit("loginSucces", response.data);
                    resolve(response.data);
                })
                .catch(error => {
                    context.commit("loginFailed", error);
                    reject(error);
                });
        });
    },
    tryLogout(context) {
        context.commit("logout");
    }
};

Маршруты

<?php

Route::group([
    'prefix' => 'auth'

], function () {
    Route::post('register', 'AuthController@register');
    Route::post('login', 'AuthController@login');
    Route::post('logout', 'AuthController@logout');
    Route::post('refresh', 'AuthController@refresh');
    Route::post('me', 'AuthController@me');
});

Контроллер авторизации

<?php

namespace App\Http\Controllers;

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

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

    public function register(Request $request)
    {
        // $user = User::create([
        //     'email'    => $request->email,
        //     'password' => $request->password,
        // ]);

        // $token = auth('api')->login($user);

        // return $this->respondWithToken($token);
        return "register";
    }

    /**
     * Get a JWT via given credentials.
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function login()
    {
        // $credentials = request(['email', 'password']);

        // if (!$token = auth('api')->attempt($credentials)) {
        //     return response()->json(['error' => 'Unauthorized'], 401);
        // }

        // return $this->respondWithToken($token);
        return "login";
    }

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

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

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

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

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

    public function guard()
    {
        return Auth::Guard('api');
    }
}

1 Ответ

1 голос
/ 03 октября 2019

Вам не хватает для импорта Request class.

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