18. Quản lý Authentication trong Next.js. Điều mà ít người nói với bạn!

Поділитися
Вставка
  • Опубліковано 1 гру 2024

КОМЕНТАРІ • 130

  • @duocdev
    @duocdev  7 місяців тому +7

    Việc dùng root layout để lấy cookie sẽ làm toàn bộ page trong app chúng ta chuyển thành dynamic rendering. Điều này đôi khi không hay lắm 😃.
    Nếu các bạn muốn fix vấn đề này thì hãy xem video 38 trong series này nhé: ua-cam.com/video/Zu-VkiNZNEw/v-deo.html
    🎥 Mình đã có khóa Next.js Super trả phí: duthanhduoc.com/courses/nextjs-super
    📕 Đây là link github khóa học Next.js Free, các bạn không cần phải submit email nữa: github.com/duthanhduoc/nextjs-free

  • @B8Official
    @B8Official 8 місяців тому

    Hay quá a. E xem rất nhiều video về Nextjs. Đa số họ toàn dạy fullstack rất khó hiểu trong khi hầu hết những người học lại làm việc với FE là chủ yếu. Giờ xem video của anh em mới hiểu về Nextjs nhiều hơn. Em hi vọng anh ngày càng ra nhiều video chất lượng như thế này hơn nữa ạ

  • @xxxibiamkiet839
    @xxxibiamkiet839 8 місяців тому

    mặc dù là free nhưng mà những video của anh rất là chất lượng và cực kì chi tiết luôn, cảm ơn anh vì những video bổ ích như thế này

  • @hoainhannguyenphan5318
    @hoainhannguyenphan5318 8 місяців тому

    Cảm ơn video của bạn nhiều lắm. Mình cũng đang bí chưa tìm được cách giải quyết về auth trong nextjs server component, thật may mắn khi thấy video của bạn. Mình đã giải quyết được vấn đề rồi :D :D

  • @duyphantan9529
    @duyphantan9529 7 місяців тому

    Phải chi em xem được video của anh sớm hơn. Thật sự em đã rất mệt mỏi khi bắt đầu với Next và tìm hiểu về phần Authentication này. NextAuth có thể gọi là rất thuận tiện cho việc implement Oauth nhưng với xác thực credential thì nó lại phức tạp hóa thật sự, nhất là những callback của nó cấu hình rất khó hiểu, tính linh động không cao. Cảm ơn anh vì video rất chất lượng ạ

  • @PhúTăngTự
    @PhúTăngTự 5 місяців тому

    quá hay, sau khi xem 2 lần thì phải nói là quá là hay điiii, respect my teacher

    • @duocdev
      @duocdev  5 місяців тому

      Trong khóa có phí còn hay nữa 🤪

  • @trananh4894
    @trananh4894 5 місяців тому

    video hay quá ạ, em cảm ơn anh rất nhiều, chúc anh nhiều sức khỏe và ra thêm nhiều video hướng dẫn cho lớp trẻ noi theo nữa anh nhé

    • @duocdev
      @duocdev  5 місяців тому

      cảm ơn em

  • @anhminh3888
    @anhminh3888 8 місяців тому +1

    Video này em thấy rất hay. Trc giờ em toàn check ở token ở client 😂

  • @hvd0706
    @hvd0706 8 місяців тому

    Học đến video này em thấy khá hợp phong cách dạy của anh, có lẽ em sẽ là học viên của anh sớm thôi xD

    • @duocdev
      @duocdev  8 місяців тому

      Hehe, nào ra khoá next có phí anh sẽ thông báo

  • @B8Official
    @B8Official 8 місяців тому

    Khoá học này đúng là khác biệt. Free nhưng chất lượng hơn nhiều khoá udemy thật

  • @gshoanganh
    @gshoanganh 6 місяців тому

    Bạn ns hợp í mình quá, next-auth phức tạp và tùm lum ghê gớm

    • @duocdev
      @duocdev  6 місяців тому

      chính xác :v

  • @HuyTran.DevBackEnd
    @HuyTran.DevBackEnd 3 місяці тому +1

    nextAuth học một hồi choáng váng cái đầu :((((

  • @MsHaTrang
    @MsHaTrang 7 місяців тому +1

    Ad làm lại bài này khi api server dùng accesstoken và cả refreshtoken nhé! Video này quá hay rồi nhưng sẽ còn hay hơn nhiều nhiều nữa nếu giải quyết được mong muốn kia!

    • @duocdev
      @duocdev  7 місяців тому +3

      Có trong series đó bạn. Xem các video sau sẽ thấy

    • @MsHaTrang
      @MsHaTrang 7 місяців тому

      Cảm ơn ad, e đã đk kênh nhé 😊

  • @ThangVo-u7d
    @ThangVo-u7d 8 місяців тому

    Đúng thứ mình đang thắc mắc, cảm ơn bạn rất nhiều

  • @geekfam_wap7515
    @geekfam_wap7515 5 місяців тому +2

    Trong trường hợp BE sử dụng cookies mode, thì 1 request từ Next server đến BE làm sao có thể xác thực được ạ?

    • @duocdev
      @duocdev  4 місяці тому

      Gắn cookie thủ công vào request á em, được mà

  • @OrionChocoboy
    @OrionChocoboy 2 місяці тому

    Cái này có hướng dẫn ở trong tài liệu của NextJS mà nhỉ

  • @dandoan-zi4gn
    @dandoan-zi4gn 6 місяців тому

    Để set token vào cookie thì cần phải có backend nữa phải không a? Nhưng nhiều khi mình không can thiệp được vào back end thì phải làm như nào ạ? A có thể làm 1 clip hướng dẫn cho em và mọi người được không ạ? Cảm ơn a nhiều ạ!

    • @duocdev
      @duocdev  6 місяців тому

      thì trên ví dụ của anh cũng nêu ra rồi đó em, Next.js server em có thể dùng để set token vào cookie theo domain của next.js đc mà. Anh có nêu 2 trường hợp Backend Server set cookie và không set cookie thì làm ntn rồi đó

  • @dwchau.254
    @dwchau.254 5 місяців тому

    Có phải server component là server, vậy nên khi vào 1 route là server component, thì client tự động đính kèm cookie ở trình duyệt để gửi lên server component (và chỉ gửi lên cookie với domain là domain của server compont đó, do client đã call đến api route để set-cookie trở lại nên nó sẽ có cookie domain là domain của server compoent ở browser), do đó ở server component hoặc api route, có thể dùng cookieStore = cookies() để lấy ra cookie đúng không ạ? bản chất cookie này là do client gửi lên, chứ không phải do server component hoặc api route truy cập vào cookie ở browser lấy ra đúng không anh

    • @duocdev
      @duocdev  5 місяців тому

      chính xác em nhé, em hiểu đúng bản chất r đó

  • @ThanhNguyen-ub7vi
    @ThanhNguyen-ub7vi 8 місяців тому

    Hi a, cho e hỏi chút là next sever và backend sever thì cả 2 thằng đều là server thì điểm khác nhau là gì giữa 2 thằng này để phân biệt được next sever và backend sever.
    Mong câu trả lời từ a. Em cảm ơn anh

    • @duocdev
      @duocdev  8 місяців тому

      Khi em vào cty, người ta cho em đảm nhận làm phần Front-End dự án bằng Next.js với API có sẵn của team C# .NET. Thì trong trường hợp này API C# .NET là Backend Server - cái này em không can thiệp được, còn Next.js Server là phần thuộc source code Next.js của em, em làm gì cũng đc

  • @mcofficial3128
    @mcofficial3128 3 місяці тому

    Lưu token vào trong context api ( trong đây context api là gì vậy ạ) a có thể ví dụ không ạ

    • @duocdev
      @duocdev  3 місяці тому

      là lưu vào state context đó em, em tìm useContext react là ra

  • @ngocduongofficial290
    @ngocduongofficial290 6 місяців тому

    Anh ơi cho em hỏi là sao login thì sao k lưu luôn token vào localStorage để dùng token bên client mà phải dùng useContext để lưu token ạ.

    • @duocdev
      @duocdev  6 місяців тому

      Thực ra là em lưu local storage cũng k sao nhé. Chỉ là anh muốn client không dùng js để truy cập vào đc cái token thôi, tránh xss acctack. Em cứ xem hết series anh sẽ có đoạn anh chuyển sang local storage

  • @namcao7718
    @namcao7718 Місяць тому

    Thay vì dùng Router Handler để set cookie cho server Next thì sao ko dùng Server Action để login và gắn cookie luôn hả bạn

    • @duocdev
      @duocdev  Місяць тому

      Bạn dùng cách nào cũng đc

  • @tupham2856
    @tupham2856 Місяць тому

    Anh Được cho em hỏi, nếu như login BE check authen dựa vào Authorization. Thì khi login ok thì BE trả về token mình vẫn sử lý như dưới được đúng ko ạ
    - Gọi ở next client: Ok vì có thể set vào LocalStorage
    - Gọi ở next server: Cũng ok vì có thể gọi qua next server api/auth để set Authorization ở header khi login thành công

    • @duocdev
      @duocdev  Місяць тому +1

      Được em.

  • @nguyentienthanh2185
    @nguyentienthanh2185 4 місяці тому

    vậy có cách nào tự động refresh-token mỗi khi access-token hết hạn trong nextjs không a nhỉ? e không muốn sử dụng thư viện

    • @duocdev
      @duocdev  4 місяці тому

      Trong khóa có phí của anh có 1 chương dành riêng cái này đó em. Khá dài nên không nói hết ở 1 video được.
      Tốt nhất là refresh trước khi nó hết hạn

  • @thevinhhuynh3333
    @thevinhhuynh3333 8 місяців тому

    Nếu dùng với firebase thì cũng lấy token của firebase trả về lưu vào cookie như cách a phải k a

    • @duocdev
      @duocdev  8 місяців тому

      Đúng em, như nhau cả

  • @CulakeShop-xw5tl
    @CulakeShop-xw5tl Місяць тому

    anh oi ngoai sessionToken thi em thay trong cookie con luu them ca mot field token cung luu token, cai nay tu dau ma ra a

    • @duocdev
      @duocdev  Місяць тому

      Có thể từ 1 source code khác em đã chạy trước đó nó gán vào cookie của em từ trước

    • @CulakeShop-xw5tl
      @CulakeShop-xw5tl Місяць тому

      @@duocdev da em hieu roi em cam on anh

  • @B8Official
    @B8Official 8 місяців тому

    Anh ơi cho em hỏi là mấy cái api của em nó là public nhưng mà api đó chứa nhiều query params. Nên em phải chuyển nó thành server client component hết thì điều này có ảnh hưởng đến SEO nhiều không ạ

    • @duocdev
      @duocdev  8 місяців тому

      không em

  • @anhtu9290
    @anhtu9290 7 місяців тому

    Cho em hỏi chỗ set sessionToken em có thể set cookie đó ở client component cũng được mà ? tại sao mình phải tạo 1 api để set

    • @duocdev
      @duocdev  7 місяців тому +1

      vì không thể set httpOnly cho cookie em

    • @anhtu9290
      @anhtu9290 7 місяців тому

      @@duocdev câu trả lời hợp lý quá a ơi

  • @nguyendinhsang7888
    @nguyendinhsang7888 5 місяців тому

    Anh ơi cho e hỏi nếu cứ dùng token ở cookie thì trường hợp token hết hạn thì check info nó ra sao ạ

    • @duocdev
      @duocdev  4 місяці тому

      Lúc login em nhận về token, em decode token ra và lưu cái exp vào localstorage là được. Lúc này em có thể biết được khi nào token sắp hết hạn để refresh

  • @anhhoccoder5358
    @anhhoccoder5358 7 місяців тому

    em đang để chế độ mode_cookie = true mà sao nó không tự động set cookie khi mình gọi api từ component client vậy ạ.
    Lần đầu em gọi từ component client server có set cookie, nhưng khi gọi 1 api từ component client thì không tự động set cookie cho server để xác thực

    • @duocdev
      @duocdev  7 місяців тому

      có thể code server của em là code cũ, em pull lại code server mới từ repo anh rồi test lại thử

    • @anhhoccoder5358
      @anhhoccoder5358 7 місяців тому

      @@duocdev Em pull lại code và đổi sang mode_cookie = true bị lỗi. Khi đăng nhận thì tự động đăng xuất luôn anh ạ. còn mode_cookie = false thì vẫn ok anh ạ

  • @HoangTruong-wu6tq
    @HoangTruong-wu6tq 5 місяців тому

    a làm video về xử lý accesstoken và refreshtoken đi a

    • @duocdev
      @duocdev  4 місяці тому

      cái này khá dài, trong khóa có phí anh có nói á em

  • @trieunguyentuan4589
    @trieunguyentuan4589 8 місяців тому

    Trường hợp người dùng f5 lại mà api load chậm thì tên username hiển thị bị giật. Có cách nào tối ưu việc đó ko bạn

    • @duocdev
      @duocdev  8 місяців тому

      Do bạn gọi API ở client nên mới thế, chứ gọi ở server thì k bị đâu. Nếu muốn xịn hơn thì bạn lưu thông tin cơ bản người dùng ở local storage để không bị giật

  • @ntaanh2084
    @ntaanh2084 3 місяці тому

    e thắc mắc tại sao không dùng nextserver làm trung gian luôn ạ

    • @duocdev
      @duocdev  3 місяці тому

      Trung gian 1 vài API thôi chứ trung gian hết mọi API làm gì em

  • @indiealucard
    @indiealucard 3 місяці тому

    bạn có bạn chung vơi anh Dao Vo không, thấy video của ổng :))

  • @KieuDiem-zp7es
    @KieuDiem-zp7es 6 місяців тому +1

    1:16:59 em xem chỗ này hoài mà khá khó hiểu . Sau khi relay 3 lần thì xem đã pass hihi. Chỗ đấy nghĩa là khi mode backend là set cookie thì backend sẽ tự set cookie cho Next client và Next client tiếp tục yêu cầu Next sever set cho tao thêm 1 cái cookie đi. Tổng cộng có 2 cái Cookie tại client đúng không anh. 😂❤❤❤

    • @duocdev
      @duocdev  6 місяців тому

      Đúng rồi em. Cookie nó được lưu theo domain

    • @dwchau.254
      @dwchau.254 5 місяців тому

      Tại sao cần tận 2 cái cookie thế bạn, mình tưởng 1 cái từ server là đủ rùi ?

    • @dwchau.254
      @dwchau.254 5 місяців тому +1

      à liệu có phải là client gọi đến server next để nó set-cookie
      Thì thằng server component mới lấy ra được cookie path= cái server nextjs
      Còn server conponent không lấy được cookie do server ngoài set-cookie (path= server ngoài) nhỉ

    • @duocdev
      @duocdev  5 місяців тому +1

      @@dwchau.254 bạn hiểu đúng vấn đề rồi đó.

  • @quannguyenviet643
    @quannguyenviet643 6 місяців тому

    Anh cho em hỏi server component em thấy vẫn có thể truy cập được cookie ở phía client mà ( trong phần rootLayout) vậy việc gì phải đi đường vòng ( nhận token từ server BE rồi chuyển token lên serve nextjs để set lại cho next client) thay vì ( nhận token từ server rồi sét thẳng cho cookie của next client) vậy a :v

    • @duocdev
      @duocdev  6 місяців тому

      Do cookie nó lưu theo domain đó em. Nếu domain api và nextjs cùng domain cha thì có thể lấy đc chứ khác thì sao mà lấy em? Em test thử anh nói có đúng k nhé

  • @vanhungnguyen7543
    @vanhungnguyen7543 8 місяців тому

    Cám ơn bạn làm video này. Mình tìm kiếm mãi toàn thấy hướng dẫn bằng NextAuth

    • @duocdev
      @duocdev  8 місяців тому +1

      Rất vui vì giúp đc bạn

  • @phantrungkien3049
    @phantrungkien3049 8 місяців тому

    giờ đăng nhập vào r mà e ko muốn mình truy cập vào được page login thì phải làm thế nào a

    • @duocdev
      @duocdev  8 місяців тому +1

      thì xem tiếp các video sau em. Dùng middleware đó

    • @phantrungkien3049
      @phantrungkien3049 8 місяців тому

      @@duocdev thanks a mong a ra thêm khoá nestjs free nữa

  • @Dannynguyen.e-commerce
    @Dannynguyen.e-commerce 8 місяців тому

    Hóng sếp ra video setup axios intercepters config

    • @duocdev
      @duocdev  8 місяців тому

      Hiện tại thì k nên dùng axios với nextjs 14.

    • @maicaotri3668
      @maicaotri3668 6 місяців тому

      @@duocdev vì sao ko nên dùng axios với nextjs 14 vậy anh?

  • @nguyenduc3012
    @nguyenduc3012 Місяць тому

    khó hiểu quá b ơi b nói tóm tắt đi vào vấn đề vd như be trả vè token và quyền làm sao để bảo mật route và check quyền là dc rồi

    • @duocdev
      @duocdev  Місяць тому

      phải biết nguyên lý trước rồi mới làm chứ bạn. Bạn hiểu React rồi thì mới thấy dễ đc

    • @nguyenduc3012
      @nguyenduc3012 Місяць тому

      @@duocdev mình cũng code react rồi cũng đọc code dự án thực tế rồi b ơi

    • @duocdev
      @duocdev  Місяць тому

      @@nguyenduc3012 Thật ra tóm gọn thì chỉ có Next.js có 2 môi trường là Server và Browser. Bạn chỉ cần lưu token vào cookie là dùng được cho môi trường server, còn muốn dùng cho môi trường client thì bạn có thể lưu thêm token vào localstorage (là thành 2 nơi) hoặc khi request web lần đầu tiên server nextjs nhận token từ cookie rồi set lại cho client vào 1 variable hoặc state nào đó là đc

  • @anhvuuc8693
    @anhvuuc8693 2 місяці тому

    :/ Dùng next auth vẫn tiện hơn chứ nhỉ. Như này là đi làm tay rồi, tích hợp thêm GG login nữa còn thở nổi k? Viết cho người mới để hiểu flow thì được...

    • @duyphantan9529
      @duyphantan9529 Місяць тому

      Thêm GG Login thì dùng firebase vẫn theo flow này làm được nhe bạn. Tiện thì bạn cứ dùng, còn ở đây người ta đang đưa ra một giải pháp khác thay thế chứ không có gì cả

  • @atnguyentien7770
    @atnguyentien7770 6 місяців тому

    anh ơi ví dụ mình tạo cookie ở trình duyệt không login mặc dù cookie sai người ta vẫn vào đc trang private mà không cần login thì có phải xử lý gì ko ạ

    • @duocdev
      @duocdev  6 місяців тому +1

      Kệ đi em, vào được chứ có fetch API đc đâu (vì cookie sai) => không thấy content + web bị lỗi ngay.

    • @atnguyentien7770
      @atnguyentien7770 6 місяців тому

      @@duocdev dạ vg ạ

  • @uPhanBa
    @uPhanBa 3 місяці тому

    hi vọng khi anh đọc được cmt này sẽ giải thích giúp em ạ, hoặc mọi người trả lời giúp em ạ: (em mới học nextjs), tại sao không code server ở next luôn ạ, sao lại tách ra có 1 server riêng rồi next-client gọi đến server => next-client nhận dữ liệu rồi => gọi next-server để set cookie, như vậy nó có chậm hơn không ? và liệu nếu như không có server kia, thì mình có thể setup next-server làm mọi việc mà không cần server node kia được không ạ

    • @duyphantan9529
      @duyphantan9529 3 місяці тому +2

      Hi mình xin trả lời câu hỏi của bạn như sau nha:
      - Q: tại sao không code server ở next luôn ạ?
      => Vì mục đích chính của nextjs sinh ra là để giải quyết vấn đề cố hữu của react là SEO, nhưng sẽ có các tác vụ không cần sử dụng SEO ví dụ admin dashboard thì việc sử dụng CSR là điều hoàn ổn.
      - Q: Việc gọi lằng ngoằng qua lại giữa client và server có làm app bị chậm đi không ?
      => Sẽ có chậm vì phải thực hiện nhiều request.
      - Q: và liệu nếu như không có server kia, thì mình có thể setup next-server làm mọi việc mà không cần server node kia được không ạ?
      => Câu này mình chưa hiểu lắm nhưng có vẻ bạn đang nói đến không cần external server thì có thể biến next-server thành một BE luôn được không. Điều này là hoàn toàn được nhưng nên hạn chế vì làm code bị to ra khó bảo trì.

    • @uPhanBa
      @uPhanBa 3 місяці тому

      @@duyphantan9529 mình cảm ơn nha đúng cái mình cần ạ

  • @thuanphamvan6210
    @thuanphamvan6210 7 місяців тому

    hi anh, dạ cho em hỏi là làm theo như doc Nextjs và không báo lỗi gì cả nhưng vẫn không set được cookie á anh

    • @thuanphamvan6210
      @thuanphamvan6210 7 місяців тому

      à với cả đoạn fetch("/api/...") này em phải dùng fetch("localhost/api/...") thì nó mới ăn, cho em hỏi cái này là sao vậy anh?

    • @duocdev
      @duocdev  7 місяців тому +1

      Có thể do logic set cookie em không đúng, em coi lại cú pháp thử nhé

    • @duocdev
      @duocdev  7 місяців тому +1

      đây em
      stackoverflow.com/questions/76905386/typeerror-fetch-failed-during-next-js-project-build

    • @thuanphamvan6210
      @thuanphamvan6210 7 місяців тому

      @@duocdev cảm ơn câu trả lời của anh nhưng mà nó vẫn chưa đúng với em anh ạ :((
      export async function POST(request: Request) {
      const res = await request.json();
      const deviceId = res.deviceId;
      console.log('deviceId: ', deviceId);
      return new Response(null, {
      status: 200,
      headers: {
      "Set-Cookie": `deviceId=${deviceId}; Path=/;`,
      },
      });
      }
      code trên em log được deviceId nhưng mà vẫn không set được Cookie ạ

    • @thuanphamvan6210
      @thuanphamvan6210 7 місяців тому

      @@duocdev update: dạ em dùng middleware thì lại set được anh, anh có thể giải thích lý do tại sao được k ạ?
      export function middleware(request: NextRequest) {
      let response = NextResponse.next();
      let deviceId = cookies().get("deviceId")?.value;
      if (!deviceId) {
      deviceId = uuidv4();
      response.cookies.set("deviceId", deviceId);
      }
      return response;
      }

  • @hoangpham1132
    @hoangpham1132 8 місяців тому

    Bạn ơi, nếu mình lưu token vào cookie và truy xuất ở app provider như vậy thì cả project mình sẽ bị chuyển thành dynamic hết, với Nextjs thì mình ko mong muốn vậy, phần lớn các trang nên là Static, thì có cách nào giải quyết vấn đề này không? Cảm ơn b

    • @duocdev
      @duocdev  8 місяців тому +1

      Có, thay vì gọi cookies() ở rootlayout thì bạn chia ra 2 layout, 1 layout cho authentication page, 1 layout cho các public page.
      Layout cho authentication page bạn gọi cookies(), và các page thuộc layout này chắc chắn phải là dynamic rồi.
      Còn layout cho public page không cần gọi gì cả, bạn có thể setting thêm bớt gì đó tùy bạn.
      Mình sẽ làm 1 cái video về optimize cái này trong video nào đó cuối khóa free này

    • @hoangpham1132
      @hoangpham1132 8 місяців тому

      @@duocdev ok thế thì tuyệt quá

    • @hoangpham1132
      @hoangpham1132 8 місяців тому

      @@duocdev Này mình nghĩ không được do llayout chung đều có phần header chung hiển thị thông tin user dc lấy từ cookie. Không biết bạn thấy thế nào

  • @vietuc8485
    @vietuc8485 8 місяців тому

    Dạ a cho em hỏi em đang làm chức năng login , với layout header là hiển thị button login (Dialog) nếu chưa đăng nhập, nếu đăng nhập rồi thị sẽ hiển thị user name.Em đang dùng get profile ở serverside để lấy thông tin user .
    Em đang làm cách là khi login nhận được access token và lưu vào cookie sẽ đóng Dialog và trigger reload lại page để get profile .
    Có cách nào khác ngoài việc dùng reload không anh nhỉ ?

    • @vietuc8485
      @vietuc8485 8 місяців тому

      Có 1 cách nữa là quản lý state ở phía client để call get profile mà có vẻ cách này header change ở phía client hơi bị giật . Nên e đang muốn nó xử lý ở phía serverside thôi á anh. Mong anh chỉ giáo 🙏

    • @duocdev
      @duocdev  8 місяців тому

      Đơn giản thôi em, khi đăng nhập thành công thì em dùng router.refresh() là đươc. Nó sẽ tiến hành gọi lên server nextjs để re-render lại server component, fetch lại data mà không cần full page reload.
      Anh có dùng cách này ở video ua-cam.com/video/8tUOanO1rXo/v-deo.html

    • @vietuc8485
      @vietuc8485 8 місяців тому

      ​@@duocdev Dạ hồi chiều em cũng xem qua video rồi thử và apply vào luôn rồi anh , cảm ơn anh nhé

  • @nguyenmanh-c6p
    @nguyenmanh-c6p 8 місяців тому

    Next server lưu session ở trong ram đúng không anh.
    Nếu server next bị sập thì người dùng phải đăng nhập lại hết ạ. Có cách nào để tối ưu hơn việc lưu session ở server không ạ.

    • @duocdev
      @duocdev  8 місяців тому

      Ai lại đi lưu session trong ram bao giờ, lưu là lưu ở db á. Còn trong video anh session lưu ở db của server backend. Nextjs chỉ lưu token cookie thôi

    • @nguyenmanh-c6p
      @nguyenmanh-c6p 7 місяців тому

      @@duocdev nếu server next js bị tắt đi bật lại thì những token cookie có bị mất không anh. Nếu token cookie bị mất thì người dùng phải đăng nhập lại không anh.

    • @duocdev
      @duocdev  7 місяців тому

      @@nguyenmanh-c6p k hiểu về cookie rồi. Cookie lưu ở máy ng dùng k phải server. Vào F8 coi mấy video mới nhất họ làm về cookie cho rõ đi em

  • @trungminh549
    @trungminh549 6 місяців тому

    Hữu ích qá

  • @vannghia512
    @vannghia512 8 місяців тому

    A ơi cho e hỏi phần authentication nếu sử dụng Next Server làm proxy thì mình có thể xử lí khi gọi api ở client thì thì tất cả request đều gọi lên Next Server và Next Server sẽ forward request đến Backend Server. Với api login thì sau khi Next Server gọi đến Backend Server sẽ nhận đc token sau đó sẽ lưu token vào Cookie. Với những api cần token thì chúng ta cũng sẽ xử lí ở Next Server bằng cách lấy token từ Cookie sau đó gắn vào Authorization rồi gửi đến Backend Server thì sẽ bỏ qua được phần sử dụng Context để lưu token ở client, a thấy cách này gọn hơn ko ạ.

    • @duocdev
      @duocdev  8 місяців тому

      không em, vì mỗi một API url ở backend server em lại khai báo 1 Route Handler ở Next.js Server. Quá khổ

    • @vannghia512
      @vannghia512 8 місяців тому

      @@duocdev mình khai báo 1 dynamic routes để match với tất cả api thì sao a

    • @duocdev
      @duocdev  8 місяців тому

      @@vannghia512 nếu như thế thì cũng oke

    • @vannghia512
      @vannghia512 8 місяців тому

      @@duocdev cảm ơn a đã giải đáp ạ

    • @hungify
      @hungify 6 місяців тому

      ​@@vannghia512 App router đâu còn support Catch all API routes đâu bạn nhỉ?

  • @phuqn10x
    @phuqn10x 7 місяців тому

    Anh cho em hỏi với ạ : tại sao mình phải dùng cả 2 backend để triển khai auth ạ ? e được hiểu là vì nextjs đã được tích hợp sẵn server lẫn client ,khi sử dụng server để gọi api bên ngoài , thì nextjs server bớt đi khoản api nhưng người dùng vẫn muốn dùng server nextjs vì nó có những tính năng khá ngon như route , middleware , optimize seo ..., cái e không hiểu là auth tại sao ko gọi thẳng từ client request định danh(username ,password...) -> server ngoài response trả luôn header Set-cookie ? (ko qua thằng server nextjs) mong anh giải đáp

    • @duocdev
      @duocdev  7 місяців тому +1

      Cơ chế cookie là lưu dựa trên domain, nên khi server ngoài nó set cookie thì chỉ những request từ client gọi đến server ngoài mới có tác dụng. Còn những request từ client ->server component-> gọi đến server ngoài thì k nhận cookie. Do nextjs có thể khác donain với server ngoài.
      Xem lại kỹ video, và thực hành mới hiểu đc cách nextjs hoạt động.
      Còn nếu như em “đc hiểu” hay “nghe nói” mà chưa code cái này thì khó mà thấm đc em

    • @phuqn10x
      @phuqn10x 7 місяців тому

      @@duocdev dạ vâng em cũng đang code và muốn tìm hiểu rõ nên có vấn đề thì hỏi anh luôn , em cảm ơn anh đã giải đáp ạ, , vậy là nếu để set-cookie thì chỉ set đc trên cùng một domain đúng không anh ?, nếu set khác domain thì sẽ có nguy cơ bị CSRF nên trình duyệt đã chặn ,

    • @duocdev
      @duocdev  7 місяців тому

      @@phuqn10x nếu domain cha thì có thể share với domain con. Về chi tiết Cookie thì F8 mới làm vài clip về nó á. Chi tiết lắm em, lên xem là hiểu

  • @hoaimiqng
    @hoaimiqng 7 місяців тому

    hay anh ơi

    • @duocdev
      @duocdev  7 місяців тому +1

      Cảm ơn em

  • @euclid90
    @euclid90 4 місяці тому

    Không nên dùng Cookie nha, xài Cookie khiến App thành Stateful, khó Scale Out :D
    Thực tế nên xài Authorization Token.

    • @duocdev
      @duocdev  4 місяці тому

      Cookie do FrontEnd Next.js tự quản lý chứ có phải do backend đâu mà bạn lo stateful :D

  • @hungminhphan6095
    @hungminhphan6095 Місяць тому

    sco là gì a

  • @tuantech9943
    @tuantech9943 8 місяців тому

    Token nó là 1/2 vấn đề, còn thằng Refresh token đau đầu nữa sếp =))

    • @duocdev
      @duocdev  8 місяців тому +1

      Đây là authentication dựa trên session token chứ không phải là kiểu access token và refresh token. Những video sau mình sẽ nói về vấn đề này nhé

    • @tuantech9943
      @tuantech9943 8 місяців тому

      @@duocdev Yup, mình hiểu mà. Comment thế ý là vẫn còn nhiều vấn đề khác nữa á

  • @tieungaoonline
    @tieungaoonline 6 місяців тому

    mình thì lại quan tâm cái next-auth :|