Laravel 10 中未定义路由 [登录]

问题描述 投票:0回答:1

使用 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 
如何解决这个问题?

我需要这个问题的良好答案

php laravel laravel-passport
1个回答
0
投票

您使用

route('login')
并给出以下错误:

路线[登录]未定义。

只需将

name()
放在路线上,如下所示:

Route::post('/login',[AuthController::class,'login'])->name('login');

查看文档此处

© www.soinside.com 2019 - 2024. All rights reserved.