Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Iowa92's avatar

vue spa with laravel api can't login

hello, I am building my first project with laravel and vue for my studies. Actually I have a big problem and I don't know how to solve it.

I made a vue spa with a laravel api. I already did the register function and everything works fine. But when I want to login, everytime I get a 405 error back.

I tested my api in postman, there everything works fine.

I don't know what to do.

my api routes:

Route::group([
   'prefix' => 'auth'
], function(){
   Route::post('login', 'AuthController@login');
   Route::post('signup', 'AuthController@signup');
   Route::get('signup/activate/{token}', 'AuthController@signupActivate');

   Route::group([
       'middleware' => 'auth:api'
   ], function(){
      Route::get('logout', 'AuthController@logout');
      Route::get('user', 'AuthController@user');
   });
});

my function in login.vue:

loginUser: function() {
               if(this.form.name !== '' && this.form.password !== ''){
                   this.formmsg['message'] = ''
                   this.laraerrors = '';
                   if(this.errors.any()){
                       console.log('errors exist', this.errors)
                   }else{
                       this.$validator.validateAll().then(() => {
                           console.log('form is valid', this.form)
                           axios.post('http://site3.local/api/auth/login', this.form).then(res => {
                               const token = res.data.token;
                               localStorage.setItem('user-token', token)
                               console.log(res);
                               this.router.push('/dashboard/welcome');
                               /*his.form.name = null;
                               this.form.password = null;
                               this.form.remember_me = false;
                               this.$validator.reset();*/
                               //this.router.push('/dashboard/welcome')

                           }).catch(error => {
                               this.laraerrors = error.response.data.errors;
                               console.log(this.laraerrors);
                               localStorage.removeItem('user-token');
                           });
                       });

                   }
               }else{
                   this.formmsg['message'] = 'Bitte Nutzernamen mit zugehörigem Passwort eingeben.'
               }

           }

my login function in authcontroller:

public function login(Request $request)
   {
       $request->validate([
           'name' => 'required|string',
           'password' => 'required|string',
           'remember_me' => 'boolean'
       ]);
       $credentials = request(['name', 'password']);
       $credentials['active'] = 1;
       $credentials['deleted_at'] = null;

       if(!Auth::attempt($credentials))
           return response()->json([
               'message' => 'Unautorisiert'
           ], 401);

       $user = $request->user();

       $tokenResult = $user->createToken('Personal Access Token');
       $token = $tokenResult->token;

       if ($request->remember_me)
           $token->expires_at = Carbon::now()->addWeeks(1);

       $token->save();

       return response()->json([
           'access_token' => $tokenResult->accessToken,
           'token_type' => 'Bearer',
           'expires_at' => Carbon::parse(
               $tokenResult->token->expires_at
           )->toDateTimeString()
       ]);
   }

I hope you can help me :(

0 likes
1 reply

Please or to participate in this conversation.