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

  Рет қаралды 17,944

Được Dev

Được Dev

Күн бұрын

Пікірлер: 130
@duocdev
@duocdev 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é: kzbin.info/www/bejne/kKaQh56fg7-Be9k 🎥 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 ạ
@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 ạ
@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
@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
@anhminh3888
@anhminh3888 8 ай бұрын
Video này em thấy rất hay. Trc giờ em toàn check ở token ở client 😂
@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
@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
@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 ай бұрын
nextAuth học một hồi choáng váng cái đầu :((((
@ThangVo-u7d
@ThangVo-u7d 8 ай бұрын
Đúng thứ mình đang thắc mắc, cảm ơn bạn rất nhiều
@MsHaTrang
@MsHaTrang 7 ай бұрын
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 6 ай бұрын
Có trong series đó bạn. Xem các video sau sẽ thấy
@MsHaTrang
@MsHaTrang 6 ай бұрын
Cảm ơn ad, e đã đk kênh nhé 😊
@OrionChocoboy
@OrionChocoboy 2 ай бұрын
Cái này có hướng dẫn ở trong tài liệu của NextJS mà nhỉ
@geekfam_wap7515
@geekfam_wap7515 5 ай бұрын
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 3 ай бұрын
Gắn cookie thủ công vào request á em, được mà
@vanhungnguyen7543
@vanhungnguyen7543 7 ай бұрын
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 7 ай бұрын
Rất vui vì giúp đc bạn
@HoangTruong-wu6tq
@HoangTruong-wu6tq 5 ай бұрын
a làm video về xử lý accesstoken và refreshtoken đi a
@duocdev
@duocdev 3 ай бұрын
cái này khá dài, trong khóa có phí anh có nói á em
@indiealucard
@indiealucard 3 ай бұрын
bạn có bạn chung vơi anh Dao Vo không, thấy video của ổng :))
@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?
@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 Ай бұрын
Được em.
@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 5 ай бұрын
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 đó
@mcofficial3128
@mcofficial3128 2 ай бұрын
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 2 ай бұрын
là lưu vào state context đó em, em tìm useContext react là ra
@KieuDiem-zp7es
@KieuDiem-zp7es 6 ай бұрын
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 ай бұрын
à 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 ай бұрын
@@dwchau.254 bạn hiểu đúng vấn đề 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 đó
@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
@trungminh549
@trungminh549 6 ай бұрын
Hữu ích qá
@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
@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
@B8Official
@B8Official 7 ай бұрын
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 7 ай бұрын
không em
@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 ай бұрын
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 ạ
@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
@ntaanh2084
@ntaanh2084 2 ай бұрын
e thắc mắc tại sao không dùng nextserver làm trung gian luôn ạ
@duocdev
@duocdev 2 ай бұрын
Trung gian 1 vài API thôi chứ trung gian hết mọi API làm gì 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 3 ай бұрын
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
@nguyendinhsang7888
@nguyendinhsang7888 4 ай бұрын
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 3 ай бұрын
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
@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é
@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ả
@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 ай бұрын
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
@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
@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 ạ
@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 ай бұрын
vì không thể set httpOnly cho cookie em
@anhtu9290
@anhtu9290 7 ай бұрын
@@duocdev câu trả lời hợp lý quá a ơi
@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ả
@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
@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 ай бұрын
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 ạ
@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 kzbin.info/www/bejne/bqW4gJSkhJaljtE
@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é
@hoaimiqng
@hoaimiqng 7 ай бұрын
hay anh ơi
@duocdev
@duocdev 7 ай бұрын
Cảm ơn em
@hoangpham1132
@hoangpham1132 7 ай бұрын
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 7 ай бұрын
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 7 ай бұрын
@@duocdev ok thế thì tuyệt quá
@hoangpham1132
@hoangpham1132 7 ай бұрын
@@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
@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ỉ?
@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 ай бұрын
Có thể do logic set cookie em không đúng, em coi lại cú pháp thử nhé
@duocdev
@duocdev 7 ай бұрын
đâ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; }
@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
@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 ай бұрын
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
@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 3 ай бұрын
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
@duocdev
@duocdev Ай бұрын
SEO đó em
@tieungaoonline
@tieungaoonline 6 ай бұрын
mình thì lại quan tâm cái next-auth :|
@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 ай бұрын
Đâ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 á
19. Tạo Http client với fetch để gọi API cho Next.js
1:08:22
If people acted like cats 🙀😹 LeoNata family #shorts
00:22
LeoNata Family
Рет қаралды 18 МЛН
FOREVER BUNNY
00:14
Natan por Aí
Рет қаралды 29 МЛН
А я думаю что за звук такой знакомый? 😂😂😂
00:15
Денис Кукояка
Рет қаралды 4,3 МЛН
Build An LLM RAG Chatbot With LangChain Python
1:01:59
Đu Trend Generative AI
Рет қаралды 2,7 М.
Next Auth v5 Complete Guide in Next.js 15 with Prisma and MongoDB
1:22:52
Programming with Umair
Рет қаралды 17 М.
Express + DI + Decorators #5: Socket Controller với socket.io
1:04:14