使用 Laravel 10 和护照身份验证。我也有以下 api 路由列表 api.php
Route::prefix('v1')->group(function (){
Route::post('/login',[AuthController::class,'login']);
Route::post('/register',[AuthController::class,'register']);
Route::middleware('auth:api')->group(function () {
Route::post('/logout',[AuthController::class, 'logout']);
Route::get('/users/{id}',[AuthController::class, 'show']);
});
});
我的 auth.php 就像
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
'hash' => false,
],
],
AuthController.php
public function login(Request $request)
{
$validator = Validator::make($request->all(), [
"email" => "required",
"password" => "required",
]);
if ($validator->fails())
return send_error('Validation error', $validator->errors(), 422);
$credentials = $request->only('email','password');
if(Auth::attempt($credentials)){
$user = Auth::user();
$data['name'] = $user->name;
$data['access_token'] = $user->createToken('accessToken')->accessToken;
return send_response('You are successfully logedin.',$data);
}else {
return send_error('Unauthorized','',401);
}
}
public function register(Request $request)
{
$validator = Validator::make($request->all(), [
"name" => "required|min:4",
"email" => "required|email|unique:users",
"password" => "required|min:6"
]);
if ($validator->fails())
return send_error('Validation error', $validator->errors(), 422);
try {
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
$data = [
'name' => $user->name,
'email' => $user->email
];
return response()->json([
'status' => true,
'message' => 'User Registration Sucess!',
'name' => $user->name
]);
return send_response('User Registration Sucess!', '$data');
}catch (Exception $e) {
// return response()->json([
// 'message' => $e->getMessage()
// ], $e->getCode());
return send_error($e->getMessage(), $e->getCode());
}
}
public function logout(Request $request)
{
return 'test';
}
我使用 postman api 进行登录,它工作正常。但是当我使用注销功能邮递员生成以下错误消息
Symfony\Component\Routing\Exception\RouteNotFoundException: Route [login] not defined. in file F:\2024\Authentication System\backend\vendor\laravel\framework\src\Illuminate\Routing\UrlGenerator.php on line 477
如何解决这个问题?
我需要这个问题的良好答案
您使用
route('login')
并给出以下错误:
路线[登录]未定义。
只需将
name()
放在路线上,如下所示:
Route::post('/login',[AuthController::class,'login'])->name('login');
查看文档此处。