Laravel SPA Authentication - setup and common mistakes

Поделиться
HTML-код
  • Опубликовано: 5 фев 2025
  • Laravel & Nuxt 3 Authentication Guide: • Video

Комментарии • 221

  • @cdruc
    @cdruc  Год назад +7

    Hey! This video is quite old and before axios used to add the x-xsrf-token header automatically. Now it no longer adds it, so you’ll have to do it yourself.
    Laravel Sanctum Auth: masteringauth.com

    • @macarenagd3954
      @macarenagd3954 8 месяцев назад

      Hello, your videos help me a lot. I am eagerly looking forward to the launch of your course. How are you doing it now with the new version? I'm using 1.7.2 and can't find a way to avoid getting a 401 error. I´m using withCredentials: true and withXSRFToken: true in my axios configuration. Thanks a lot man!

    • @masollano
      @masollano 5 месяцев назад

      is the site already up?

    • @alexkart
      @alexkart 9 дней назад

      hello, are you still working on that mastering auth course? when do you plan to launch it?

  • @DimZeta
    @DimZeta Год назад +37

    This is one of the clearest and easiest to understand videos about Laravel Sanctum, but also about CORS and CSRF token. Thanks a lot!

    • @cdruc
      @cdruc  Год назад +2

      You’re very welcome! glad you enjoyed it!

    • @teknotips188
      @teknotips188 Год назад

      100% agree

  • @thisisroushan_1337
    @thisisroushan_1337 10 месяцев назад

    This was an incredibly in-depth video that really showed me why I was facing the errors I was facing. Thank you!

  • @shofada
    @shofada 2 года назад +15

    Wow! Diagrams and in-depth explanations. This is a sweet upgrade. Thanks for putting this together. Keep it up!

  • @pccc2011
    @pccc2011 2 месяца назад

    This is the most clearly video explain about Laravel Sanctum and Cookie based. Thanks so much!! ❤

  • @janmichaelbesinga3867
    @janmichaelbesinga3867 2 года назад +2

    After watching for a couple of minutes, i realized i need to pause the video and hit like and subscribe. Kudos

  • @REZAZIMohamedabdessamed
    @REZAZIMohamedabdessamed Год назад +2

    That's the most straight forward and cleaner explanation about Laravel sanctum auth and CORS.

  • @ericrojas3385
    @ericrojas3385 3 месяца назад +1

    Oh man thanks a lot!!. I had already given up on Sanctum and was going to replace it with jwt or bearer tokens until I saw your video. You're the best!!

  • @IntiMaldonado
    @IntiMaldonado Год назад +1

    This is the best and most needed explanation online about setting up latavel api with spa front end 👌

  • @Redheadtama1
    @Redheadtama1 Год назад +2

    Thank you so much for making these videos. After scouring the internet for months looking for help with my hobby project, I have finally found you and you are the only person who explains this stuff in simple terms!
    P.S. I have subscribed to your course. Looking forward to it :)

  • @neonneon8225
    @neonneon8225 11 месяцев назад +1

    Thank you so much, I resolved the problem I was faced with after watching your great video tutorial. Additionally, I learnt some extra important points from you. Thanks Sir.

  • @kapa4208
    @kapa4208 Год назад +3

    Definitely the clearest explanation of SPA authentication with Laravel and Vue. Thank you so much!

  • @kirinyetbrian
    @kirinyetbrian Год назад +2

    This helped me a lot after struggling for three days.Thank you!

  • @sinaahmadpour3180
    @sinaahmadpour3180 Год назад

    After 10 years I finally understood the CORS issue completely!
    Thank you for the great material

    • @cdruc
      @cdruc  Год назад +2

      glad you found it useful! 👊

  • @chillywilly314
    @chillywilly314 6 месяцев назад

    Super detailed! Best tutorial on sanctum so far. Thank you

  • @ericksanabria5657
    @ericksanabria5657 2 года назад +1

    wow! i have been struggling in my first spa project. I wiill reconfigure everything again. You have gained a new subscriber ty

  • @siyabdev
    @siyabdev Год назад +1

    Your exaplanation is just WOW

  • @OnlyGoUpW
    @OnlyGoUpW Год назад +1

    again you saved my life for the second time !
    thank you from algeria !!

  • @justinenemuadia9887
    @justinenemuadia9887 2 года назад +1

    Man, I came from the article. Thank you soooooooo muchh

  • @laracrafts195
    @laracrafts195 9 месяцев назад

    nice video, you made everything clear and precise without any issues

  • @twentyfirstmen
    @twentyfirstmen Год назад +1

    Bro, You're so good at explaining, Thanks a lot, continue ❤❤💪🏼💪🏼

  • @Naixik
    @Naixik Год назад +2

    Thank you for this vidéo, I lost 2 days to still find your solution !

    • @cdruc
      @cdruc  Год назад

      Glad it helped!

  • @mostafakhaled6680
    @mostafakhaled6680 2 года назад +1

    you did a great job man , thanks for your time and efforts

  • @israeliloba
    @israeliloba 9 месяцев назад

    Thank you so much, i have been on this error for two days now

  • @Алексей-у6щ1о
    @Алексей-у6щ1о Год назад

    Thank you very much! I could not solve such a problem for a long time.

  • @tukangkabel4997
    @tukangkabel4997 Год назад

    I like this! Brief explanation, clear and easy to understand.
    I'm waiting for a tutorial on creating or installing an admin template. After login this is done. Thanks

  • @dibbyo456
    @dibbyo456 2 года назад

    Finally something that actually works. Thank you so much.

    • @cdruc
      @cdruc  2 года назад +1

      Glad it helped 👊

  • @alexalex6163
    @alexalex6163 7 месяцев назад +1

    Thank you very much! I`ve learned a lot thanks to you.

  • @turdakhov
    @turdakhov Год назад +1

    Absolutly incredible tutorial. Thank you!

  • @muhammadumarsotvoldiev8768
    @muhammadumarsotvoldiev8768 Год назад +1

    Brilliant job!

  • @oketafred
    @oketafred 2 года назад +1

    Thanks Constantin awesome content as always

    • @cdruc
      @cdruc  2 года назад

      Glad you enjoyed it👊

  • @ZanarkandStarplayer
    @ZanarkandStarplayer Год назад

    Thanks!

    • @cdruc
      @cdruc  Год назад

      Thank you! 👊

  • @johnpaularcenal6516
    @johnpaularcenal6516 Год назад +1

    Saved my life! Thank You so much!!

  • @pedromartins5512
    @pedromartins5512 Год назад +1

    You saved my project. Thanks 🙏

  • @LadyMariYo
    @LadyMariYo 2 года назад +1

    Thank you for the thorough explanation!

  • @juniordev4190
    @juniordev4190 2 года назад +1

    Extremely useful. Thank you for sharing.

    • @cdruc
      @cdruc  2 года назад

      Glad you find it helpful 👊

  • @helioao
    @helioao Год назад

    Jesus! Saved my month! Thank you so much! I spent the last weeks asking WTHGO??? Why this does not work?!??!

    • @cdruc
      @cdruc  Год назад +1

      Glad you found it helpful! 👊

    • @helioao
      @helioao Год назад

      @@cdruc looks like a joke but I came here to stop losing time with a second project, and boo, I inverted the ports of frontend and backend (9001 and 9002). So thanks again.

  • @Samuel.Mwangi
    @Samuel.Mwangi 2 года назад +1

    Thanks Constantin as always.

  • @wahyunurarizky1911
    @wahyunurarizky1911 2 года назад +1

    hello mr Druc, i'm your new subscriber. thanks for making great videos

    • @cdruc
      @cdruc  2 года назад

      Hello, Glad you find them useful!

  • @ihorrud5088
    @ihorrud5088 Год назад +1

    Thank you bro!Very good explanation.

  • @AungThuZaw-u3x
    @AungThuZaw-u3x Год назад +1

    Thanks A lot. I struggling 2 days for those error.

  • @abdobouna
    @abdobouna 2 года назад +1

    Very nice video, thank you for the insight.

  • @youssefelgharib7092
    @youssefelgharib7092 2 года назад +3

    Thank you very much mr.Constantin Druc for your helpful videos.
    I've a question for you:
    What do you think is more practical inertia or api and why?
    We saw that inertia handles the most annoying things such as CSRF validation, error handling and routing and so on ...

    • @nadjinmalade8738
      @nadjinmalade8738 2 года назад +1

      Since Inertia came, I only use Inertia.

    • @cdruc
      @cdruc  2 года назад +1

      As always, it depends on your purpose and what you want to achieve.
      Mobile app in the plans? LaravelAPI + Vue3.
      No mobile app + control over the tech stack? InertiaJS.
      Looking to increase hiring chances? LaravelAPI + Vue3.
      If your aim is speed of development & !mobile, Inertia all the way!

  • @johnedmersonpizarra9750
    @johnedmersonpizarra9750 Год назад +1

    Thank you so much for this tutorial 😭😭

  • @yohanlopes1847
    @yohanlopes1847 Год назад

    marvelous video, taught me a lot

  • @madie2659
    @madie2659 Год назад +1

    wow, you explain very good, please create a video on laravel relationships

    • @cdruc
      @cdruc  Год назад +1

      sadly i’m not working too much with Laravel these days 😩
      look up laracasts - im sure they have something like this for free / on their YT channel 🤞

  • @dandybagusprasetyo8871
    @dandybagusprasetyo8871 5 месяцев назад

    Hello...
    how can i handle check this user logged in or not? for accessing the requiresAuth: true route in vue js?

  • @geniygames4620
    @geniygames4620 10 месяцев назад

    Thank you for the video! I do everything the same as you, except installing laravel breeze. It does not work for me. Do I need to do anything additional if it works on a local host without breeze?

  • @jondoe79
    @jondoe79 2 года назад +1

    Awesome 😎 as it should be.

  • @ngounthengos
    @ngounthengos Год назад +1

    thank you for your tips.

  • @phenomenal3873
    @phenomenal3873 10 месяцев назад

    you are a lifesaver

  • @salaheddineahansal
    @salaheddineahansal Год назад +1

    Thank you very much ❤🙏

  • @7ala9at
    @7ala9at 2 года назад +1

    thank you, how to check user status , is logged or not

  • @peterpardo4138
    @peterpardo4138 Год назад +1

    Wow! Thank you for this!

  • @mibrahim4245
    @mibrahim4245 Год назад

    thank you for the very clear video ! ..
    excuse me for the dumb questiion, but if I want to protect a route with the authentication .. should I set it to ->middleware('auth:sanctum') or ->middleware('auth:api') ?
    the second thing, is at login controller; when I want to return the access_token in a cookie, should I return it like this:
    return response()->json(whatever)->withCookie(cookie("access_token", $token, 60) for example? or is there a setting that will make the token be returned in a cookie out of the box ?

    • @cdruc
      @cdruc  Год назад +2

      Hey, you should be using the "auth:sanctum" middleware. For the second thing, I don't know why you would want to return an access_token as a cookie - sounds like you're mixing token based authentication with session based authentication. Maybe these two videos are helpful:
      - ruclips.net/video/NY9yoqoN72w/видео.html
      - ruclips.net/video/HLPoKz9j9KY/видео.html

    • @mibrahim4245
      @mibrahim4245 Год назад

      @@cdruc thank you for ur response, yea I think that too ;P .. I'll check out those vids .. thanks

  • @bulentguven4662
    @bulentguven4662 Год назад

    Hi, I wonder that to I have to clear top level domain cookies every time user logout? For the first time, it is okey that my sanctum api block unregistered user access to the specific url. However, after logging in and logging out again, that's when the problems occur. After logging out, sanctum doesn't block the request and send the success response.

  • @МихаилМошков-ч3щ
    @МихаилМошков-ч3щ 11 месяцев назад

    Ты лучший! You're the best!

  • @chalvarenga96
    @chalvarenga96 2 года назад +1

    Excellent! I have a question, how can I do everything you did in the video but, instead of testing the endpoints with a frontend, test it with Postman? Is that possible?

  • @imtiazakidarmawan602
    @imtiazakidarmawan602 11 месяцев назад

    I tried the same but there is no cookie and session on both the backend and frontend. Any solution ?. Thanks

  • @madtin
    @madtin Год назад

    How would you check if there's a valid session in the front end? laravel is always settings the session cookie even if logged out...

  • @cba8228
    @cba8228 2 года назад +1

    Muchas gracias, Great video!

  • @OnlyGoUpW
    @OnlyGoUpW 2 года назад +1

    you saved my life

    • @cdruc
      @cdruc  2 года назад +1

      Lol 😂😂
      glad u find it helpful 👊

  • @ajndlajjnl4175
    @ajndlajjnl4175 Год назад

    hello sir why dont u use laravel fortify for backend, or develop with inertia for fullstackapp

  • @godofbrowser
    @godofbrowser 2 года назад +1

    Thanks for sharing

  • @steevenjackson667
    @steevenjackson667 9 месяцев назад

    Seriously. Thank you so much!!!

  • @kristiyan.zhelyazkov
    @kristiyan.zhelyazkov 2 года назад +1

    I have one question. How did you run your spa under spa.example.test? For the laravel project I think you use valet but for the vue project?

    • @cdruc
      @cdruc  2 года назад +2

      I use a build-watch command for vue and a custom valet driver. Might write a blogpost / make a video on this at some point

    • @cdruc
      @cdruc  2 года назад +2

      ✍️ Wrote a blogpost: cdruc.com/valet-vue

  • @adamshaibu3911
    @adamshaibu3911 Год назад

    @cdruc i install sanctum without breeze. Both domains have the same session and xsrf token, yet 401

    • @cdruc
      @cdruc  Год назад

      check sanctum stateful domains list

  • @rhenaldkarrel
    @rhenaldkarrel Год назад +1

    What if I want to perform a create action where there's a middleware of auth:api? How to pass the token to the axios authorization? Thank you for the video by the way!

    • @JustAnonymous1
      @JustAnonymous1 11 месяцев назад

      the same qst did you get it ? i try to passed the toekn in the session and get them before make the req but i don't if it's good solution or not!

  • @jervi_sir
    @jervi_sir 2 года назад

    great video,
    is it same case with reactNative.

  • @siyabdev
    @siyabdev Год назад

    I i set up Cookie based authentication in Laravel/Nuxt/Sanctum and in future, i build a mobile app for my API, the flow of CSRF would remain the same or would it change?

  • @tomatomov9061
    @tomatomov9061 Год назад

    Have a question.
    Everytime when the user logs in, sanctum will generate new baerer token and then you are adding it in cookie so it can be used in further actions, until the user logs out ? Did I understand it correct ?

  • @firassebai8592
    @firassebai8592 Год назад

    can i start with laravel ui and implement sanctum for spa ?

  • @bernanribeiro3329
    @bernanribeiro3329 Год назад +1

    When you install breeze it came to everything setup, but is amazing understand on how it work. But actually I came here because I still getting problem regarding this. My login and register is working perfectly, but when I update the user data I am getting this CORS errors : "'Access-Control-Allow-Origin' header is present on the requested resource." Do have any idea why?

  • @moali6657
    @moali6657 Год назад

    Should we use session based authentication??
    Or it is enough to use token based authentication with sanctum

    • @cdruc
      @cdruc  Год назад +1

      session based for frontend apps, tokens for anything else

    • @moali6657
      @moali6657 Год назад

      @@cdruc thank you so much for replying

    • @moali6657
      @moali6657 Год назад

      @@cdruc
      sir, I have another question please, do you recommend using Breeze or Fortify, with Sanctum, as Laravel API

    • @cdruc
      @cdruc  Год назад +1

      @@moali6657 Both are great but I usually go with breeze

    • @moali6657
      @moali6657 Год назад

      thanks @@cdruc

  • @nicolairomanov9305
    @nicolairomanov9305 2 года назад +1

    Thank you!

  • @banalexandru4393
    @banalexandru4393 Год назад

    In angular I reapted the exact same steps, but the XSRF-TOKEN cookie is not being set in the browser cookies storage, neither the other API cookies. I can't seem to find an answer for this anywhere

  • @NguyenVuAnhKhoa
    @NguyenVuAnhKhoa 10 месяцев назад

    i got 401 unauthorized but with nuxtjs, i used the loginWith for login and have properly configured but still got that 401 error. Do u have any solution please

  • @milendimitrov6503
    @milendimitrov6503 Год назад

    Very nice video

  • @nadjinmalade8738
    @nadjinmalade8738 2 года назад +1

    Thank a Lot.

  • @bahacherni8776
    @bahacherni8776 Год назад

    could you please explain it throw pinia state management

    • @cdruc
      @cdruc  Год назад

      i have a couple of videos on this, look through the chanel

  • @allaboutnaturesound6033
    @allaboutnaturesound6033 Год назад +1

    save my day

  • @allaghi
    @allaghi 2 года назад

    I am working on new project using jetstream with inertia, and planning to connect it with mobile app, I am thinking of using passport, we need you advice.

  • @coder236
    @coder236 Год назад

    i know you said that the request must sit on the same domains, but can't you allow separate domains in the cors? so say i'm using laravel Herd, i have a domain of 'my_domain.test' but my react frontend is sitting on localhost:5173... if i put localhost:5173 into cors settings, can i not send requests?

    • @cdruc
      @cdruc  Год назад +1

      cors has nothing to do with this. the problem are cookies - they cannot be shared across different domains.
      watch this: ruclips.net/video/gKC7yvllsPE/видео.html

    • @coder236
      @coder236 Год назад +1

      @@cdruc ah awesome thanks for this

  • @rafaelacioly3252
    @rafaelacioly3252 Год назад

    Mine keep returning 303 followed by a 200, any idea how to fix it?

    • @cdruc
      @cdruc  Год назад

      this is a weird one. Never got a 303 response - can you put up a reproduceable repo(s)? I'm always down to help if enough details are provided

  • @AlexGower
    @AlexGower 2 года назад

    Do you have to set the session in the .env if you setup the sanctum stateful in .env?

    • @cdruc
      @cdruc  2 года назад

      Yes, you need to set both.

    • @AlexGower
      @AlexGower 2 года назад +1

      @@cdruc why do you think the default .env file when install breeze api doesn't include SESSION_DOMAIN and SANCTUM_STATEFUL_DOMAINS? It seems like this should be a default?

  • @habeebmurtala7318
    @habeebmurtala7318 2 года назад

    Hi, thank you for this video. can I authenticate from a mobile app after configuring for spa?

    • @cdruc
      @cdruc  2 года назад

      Yes, watch this video:
      tallpad.com/series/laravel-misc/lessons/authenticate-mobile-applications-with-laravel-sanctum
      You don't have to follow all the steps there, though; since you've already configured for spa.

  • @lyricsremix7884
    @lyricsremix7884 Год назад

    the user gets logged out on brouser page refresh
    im using laravel api + react js
    any soltion ?

  • @ibilalkhilji
    @ibilalkhilji 2 года назад

    Which font you are using in the IDE?

  • @maiikkeerruu
    @maiikkeerruu 11 месяцев назад

    May i know what os you are using?

  • @nabeelyousafpasha
    @nabeelyousafpasha Год назад

    Respect from Pakistan

  • @MuhammadYusuf-tr3xe
    @MuhammadYusuf-tr3xe Год назад

    Thanks for this wonderful video, however in my case, I set up the STATEFUL_DOMAINS correctly in my env yet I still have a 419 error

  • @MrAbdooo2008
    @MrAbdooo2008 2 года назад +1

    great

  • @iam.masoudsamimi
    @iam.masoudsamimi 3 месяца назад

    The "CSRF Missmatch" is mostly the combination of scripts and version problems.
    I have tested "axios" version 1.1.3 working with Laravel 9, 10, 11 all fine.
    I have tested "axios" vesrion 1.5.1 working with Laravel 9 & 10 but failing with 11.
    I have tested "axios" version above 1.6 and failing with Laravel 9, 10 & 11.
    Can anyone else test and report?

  • @alimosbah
    @alimosbah 2 года назад

    Can you explain to deploy laravel vite inertia ssr

  • @waqaransari7274
    @waqaransari7274 Год назад

    The post request giving 419 error how to fix it?
    I follow all steps according to the video.

    • @joemarpalting1469
      @joemarpalting1469 Год назад

      same. any solution?

    • @ya9_47
      @ya9_47 Год назад

      @@joemarpalting1469 update Http/MiddlewareVerifyCsrfToken add /login and api/*

    • @alejandrobonilla1142
      @alejandrobonilla1142 Год назад

      @@joemarpalting1469 add this "axios.defaults.withXSRFToken = true;" in App.vue file. =)

  • @catalina3873
    @catalina3873 2 года назад

    谢谢🙏 I hate the cros 😢😅

  • @yukngide
    @yukngide Год назад

    Thank you for the tutorial

  • @ricknatanielwalker9669
    @ricknatanielwalker9669 Год назад

    Hi, your tutorial helped me very much, mainly The article you wrote, is so clear. Congrats.
    Well, not everything is as easier as ti looks. Well, the truth is I am getting a CORS error: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
    I set everything up and one and only thing that is different is that I have a standard Laravel application installation. So, in this installation, the 'paths' variable in the cors.php config file remains 'paths' => ['api/*', 'sanctum/csrf-cookie']. When I accept all incoming requests ('paths' => ['*', 'sanctum/csrf-cookie']), I don't get any CORS error. I wouldn't like to mess with this because I don't know what will be the consequences, but I would appreciate help in this situation. What should I do to pass

    • @cdruc
      @cdruc  Год назад +1

      Hey! Glad the video somewhat helped you move the ball further. Would've been great to have specified the request causing the CORS error but I'll guess it's the /login endpoint 😃
      Now, CORS is a security feature that allows you to control what requests the application should accept, and more importantly, from where (who is allowed to talk to my app).
      The paths array is a list of endpoints that accept cross-origin requests (requests that don't originate/come from your application domain).
      Since the /login endpoint is not part of the paths array, it does not accept cross-origin requests, hence you get the CORS error. Same will be true for other endpoints that are not there - for example, /register.
      But what is even more important, is *who* is allowed to talk to your application. I'm referring to the allowed_origins setting. This should be a list of origins that are allowed to make requests to your laravel application - usually just your frontend app.
      I already made a couple of YT videos on this topic and I know sometimes things are not super clear or easy to follow - it's just hard to fit everything in a couple of videos. That's why I'm working on: masteringauth.com
      Let me know how it goes, and if you stumble upon other issues, please send an e-mail at druc@pinsmile.com . I plan on having a "common issues" section in my course that explains and helps people fix their auth issues. Just make sure to include repository links and the .env file so I can to reproduce the issue(s).

    • @ricknatanielwalker9669
      @ricknatanielwalker9669 Год назад

      @@cdruc I figured out that I had to include the endpoints that I want to hit in my path from the frontend. The confusion I was making is that in the official Laravel documentation site they say just for configuring sanctum to authenticate the SPA I would be able to hit endpoint from web.php.
      I'm excited about the course you're making and I was here thinking if I could give you a hand on it. Well, if it is in my domains

  • @nlveej
    @nlveej 2 года назад

    how did you made your frontend url to be domain instead of localhost:port?

    • @cdruc
      @cdruc  2 года назад

      I use laravel valet. it does that automatically

  • @hashemim
    @hashemim Год назад +1

    how can we connect local vue app to a laravel app that deployed on host ?
    thanks for good video btw :)

    • @cdruc
      @cdruc  Год назад

      For dev-only, you can add token based auth and save it in localstorage 🤷‍♂️ - but this is a no-no for production apps.

    • @hashemim
      @hashemim Год назад

      yes i did so. after failure in use token-based auth on shared host i came for this video and it didn't work at first. CPanel delete Authorization Header BTW and my problem was about that ...
      thank you for content 🙏@@cdruc