如何修复Laravel“此路线不支持Post方法”?

时间:2019-03-24 23:37:58

标签: php laravel authentication oauth

我正在尝试使用Laravel Passport创建身份验证,我已经按照官方文档中所述的正确方式配置了所有内容。 GET Route方法可以完美地工作(请参见下面的代码),但是当我尝试POST Route方法时,总是会收到此错误:

  

此路由不支持POST方法。支持的方法:GET,HEAD。

P.S:我正在使用Postman进行测试。

我尝试添加CSRF令牌,但是什么也没有发生,并且遇到相同的错误。

控制器

""everything is fine"

路线

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

        if ($validator->fails()) {
            return response(['errors' => $validator->errors()->all()], 422);
        }

        $request['password'] = Hash::make($request['password']);
        $user = User::create($request->toArray());
        $token = $user->createToken('Laravel Password Grant Client')->accessToken;
        $response = ['token' => $token];

        return response($response, 200);
    }

    public function login(Request $request)
    {
        $user = User::where('email', $request->email)->first();

        if ($user) {
            if (Hash::check($request->password, $user->password)) {
                $token = $user->createToken('Laravel Password Grant Client')->accessToken;
                $response = ['token' => $token];

                return response($response, 200);
            } else {
                $response = "Password missmatch";

                return response($response, 422);
            }

        } else {
            $response = 'User does not exist';

            return response($response, 422);
        }
    }

    public function logout(Request $request)
    {
        $token = $request->user()->token();
        $token->revoke();
        $response = 'You have been succesfully logged out!';

        return response($response, 200);
    }
}

我希望获得用户注册,并且返回auth令牌,但它向我显示 “此路由不支持POST方法。受支持的方法:GET,HEAD。”

1 个答案:

答案 0 :(得分:0)

此行应位于api.php

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