【发布时间】:2019-08-15 05:04:40
【问题描述】:
我正在尝试使用 Laravel Passport 创建身份验证,我已经按照官方文档中提到的正确方式配置了所有内容。 GET Route 方法运行良好(参见下面的代码),但是当我尝试 POST Route 方法时,我总是收到此错误:
此路由不支持 POST 方法。支持的方法:GET、HEAD。
P.S:我正在使用 Postman 进行测试。
我尝试包含 CSRF 令牌,但没有任何反应,并且出现同样的错误。
控制器
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);
}
}
路线
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Route::post('/login', 'Api\AuthController@login')->name('login.api');
Route::post('/register', 'Api\AuthController@register')->name('register.api');
我希望用户注册,它会返回身份验证令牌,但它显示给我 "此路由不支持 POST 方法。支持的方法:GET、HEAD。"
【问题讨论】:
-
"此路由不支持 POST 方法。支持的方法:GET、HEAD" -- 您选择了哪三个路由?
-
第一条路由应该是
api.php吧?所以url应该带有前缀api/user。我认为您没有在问题中包含所有信息。 -
@senty 是的,我必须在 api.php 中创建路由...现在可以完美运行了,非常感谢
标签: php laravel authentication oauth