Bạn nào bị lỗi "Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client" thì nhớ thêm return trước "res.status().json" nhé :D
@LeucBinhPH
Жыл бұрын
cảm ơn bạn rất nhiều, video của bạn rất chất lượng, cụ thể, chi tiết, hữu ích. Tôi xem rất thích!
@unclefivefootball
2 жыл бұрын
Sắp tới hi vọng e sẽ làm 1 video hướng dẫn full MERN Project, thanks e
@lenhac9040
2 жыл бұрын
Hay quá , xem mà nghiện
@sonchay8106
2 жыл бұрын
52:25 ngay từ đầu a nói how to store token là e nghĩ luôn đến redux rùi. Hai cái kia thì e chỉ học đc cái localStorage còn cookies e chưa học qua
@ken2ker495
3 ай бұрын
em vẫn chưa hiểu code nó chạy ở đoạn verifyTokenAndAdminAuth là như thế nào , khi mình gọi tới middlewareController.verifyToken(req,res,()=> {...}) , cái tham số thứ 3 ở đây là kiểu sao v ạ , nó có phải thay thế cho thằng next không ạ
@nhatleminh9176
2 жыл бұрын
24:18 anh ơi cho em hỏi vì sao phải có ._doc vậy anh
@dailycheeseofficial
2 жыл бұрын
Cho mình hỏi đoạn bạn refresh access token mới, nếu refresh token cũ còn hạn thì sao phải gen cả refresh token mới v bạn
@oanuchai2752
2 ай бұрын
Hay nha, chi tiết đầy đủ nha
@devculi3908
2 жыл бұрын
Cảm ơn anh rất nhiều, rất chi tiết và tận tình luôn
@vansinhle8129
Жыл бұрын
anh ơi vì sao mình lưu refreshToken lên cookies rồi mà mình còn phải lưu lên database làm gì vậy ạ và nếu mình mún dùng refreshToken để tạo ra newAccessToken thì mình nên lấy từ cái nào ra ạ. mong trả lời thắc mắc này của em ạ
2 жыл бұрын
Cảm ơn bạn đã hướng dẫn tận tình
@lethitruc6794
Жыл бұрын
1:04:06 lưu các refresh token dưới dạng array như thế nào v a ơi, e đang dùng mySQL
@bachkhoait4.052
2 жыл бұрын
Mình đã hoàn thành 2 /3 cảm ơn bạn nhìu
@NguyeninhHuyPH
Жыл бұрын
a cho em hỏi tại sao khi lưu refresh token vào cookie những bên trình duyệt nó lại không thêm được mặc dù Api response cookie đấy
@thanhhuynguyen7551
2 ай бұрын
Rất hay và bổ ích, bạn rất thành thạo về JWT và các phần liên quan. Respect!
@huyogia3069
2 жыл бұрын
Mong mn giải đáp giúp ở là khi làm refresh token, logout có cần tới cái database mà e thấy trong video có sự dụng database là mongodb mà tại sao admin lại nói là không có database nên sự dụng mảng v ạ. Em xin cảm ơn
@thanhduongblue
10 ай бұрын
Ko có bảng lưu. Chỉ tạo mỗi table user
@hiennham8872
Жыл бұрын
refresh và access token mình ghim cả 2 ở cookie đc ko a?
@khuongviettai
Жыл бұрын
lỗi code 11000 khi đăng ký username thư 2. thì fix như nào vậy. cám ơn
@DenDenCover
2 жыл бұрын
1:10:03 không cần nhập Cookie thì cũng refresh tken đc a, điều kiện là phải login trước, vì khi login thì mình có set refre tken vào cookie. em ko biết có phải bug ko
@cookieman.19
Жыл бұрын
Duy cho mình hỏi, tại 1:05:52, bạn đặt câu lệnh để bắt 403, mình chạy thì nó báo do mảng "refreshTokens" ban đầu rỗng nên nó luôn bắn ra 403, comment dòng 403 đó thì code chạy bth. Nhưng sao của bạn chạy vẫn bình thường nhỉ, nhờ Duy gthich giúp mình
@DenDenCover
2 жыл бұрын
anh cho e hỏi là, mình sẽ dựa trên access token để logout, vì short lived nên nếu hết hạn thì phải refresh đúng ko ạ
@ThangNguyenVan-ov1el
Жыл бұрын
Bạn ơi cho mình hỏi xíu. Mình đang có trường hợp xác suất nhỏ xảy ra nhưng mình vẫn muốn hỏi là như này. Nếu khi mà mình đăng nhập và bị mất refresh token trong khoảng thời gian token còn hạn nhưng mình close tab không call lại refresh token mà hacker sửa dụng refresh token của mình để tiếp tục truy cập tiếp, 1 tuần sau mình mới vào lại và khi ấy mình mới vào lại thì xử lý thế nào cho ổn phía server đc bạn nhỉ.
@lucnguyeninh1057
Жыл бұрын
bạn cho mình hỏi phút 18:01 user._id, sao lại là user.id nhỉ
@hautran7559
2 жыл бұрын
A ơi cho e hỏi với ạ. Tại sao phải filter trong khi mình có thể remove đi cái token cũ ạ, em thấy cái mảng refreshtoken thì cũng chỉ chứ 1 hoặc 2 phần tử thui ạ 1:06:55
@DanielTruongDev
2 жыл бұрын
cái chức năng đó để giả lập nếu e lưu trữ token trong cái database như Redis chẳng hạn rồi e xoá nó đi th, em phải tìm cái token đó r filter đi trả về một dãy token mới kh bao gồm nó chứ em remove bằng .pop thì lỡ như đó kh phải là cái refreshToken mà em đang xài thì sao?
@quangvutran46
9 ай бұрын
sao e không thấy phần 3 vậy a
@maiphuchoang7170
Жыл бұрын
Đang cần học JWT gặp video bạn bổ ích quá, cho mình hỏi user._doc là cú pháp gì vậy bạn, mình gg ko ra
@lact1323
Жыл бұрын
user._doc trả về object đã được truy xuất từ hàm find bạn dùng ở trên ấy
@thanh8699
2 жыл бұрын
cho em hỏi tại sao anh không lưu cái arr refreshTokens trong mongodb luôn ạ
@congtranchien9206
Жыл бұрын
Anh cho em hỏi là khi mình lưu refresherTokens vào database thì nó có tác dụng gì vây ạ? Anh có thể ví dụ cụ thể trường hợp mình sẽ sử dụng đến ko a ?
@tuannguyenanh4061
Жыл бұрын
bảo mật hơn chứ còn sao nữa
@05.tuanatnguyen49
6 ай бұрын
em cảm ơn anh rất nhiều ạ
@ShaloMArtist
2 жыл бұрын
chỗ verify TokenAdmin , user.id của mình trả về undefined là do đâu nhỉ
@truongminhphuc4337
Жыл бұрын
anh dùng theme vscode gì vậy ạ
@jusstaname
2 жыл бұрын
Bạn cho mình hỏi là nếu chỉ cần tạo login/register API thôi thì xem Video phần 1 và Phần 2 đến phút 26 là đủ rồi đúng k ạ
@DanielTruongDev
2 жыл бұрын
đủng r b, phần 3 chủ yếu mình nói về login/register phía front-end cũng như cách sử dụng mấy cái token ở phía front-end
@dayladanhnemay9841
Жыл бұрын
Cho mình hỏi vậy là mỗi lần hết 20s thì sẽ gọi refreshToken để lấy accessToken mới và lại xoá refreshToken cũ trong DB đi và cấp cho nó refreshToken mới gắn vào cookie thì như v là refreshToken sẽ không bào giờ hết hạn ạ, trừ khi là không gọi requestRefreshToken trong vòng 365d sao ạ
@DanielTruongDev
Жыл бұрын
ngoaif đời thì mấy cái token này sẽ do bên thứ 3 xử lý như nếu b sử dụng API của facebook hay Github thì nó đều có ngày hết hạn r phải tạo token mới ấy, JWT chỉ là concept th chứ ngoài đời kh ai áp dụng y chang như v để làm đâu, đa số xài xác minh bên thứ ba như Auth0 hay Google Auth chẳng hạn, nma bth thì kh ai đẻ hạn của token 20s đâu =)) mình dể v trong video để ví dụ th
@n8.trinhconguc417
Жыл бұрын
qua hay luon
@hahuuo3
Жыл бұрын
A ơi e tìm hiểu về library passportJs để login gg vs fb thì nó dùng session để tạo phiên đăng nhập, passport nó có serializeUser và desesrializeUser để generate req.user ở mỗi request, vậy thế là khỏi cần jwt luôn ạ
@duykhanhnguyen9274
Жыл бұрын
theo mình biết thì jwt cũng là 1 kiểu session nên chỉ cần 1 trong 2 thôi, cơ mà có vẻ jwt vẫn hay được sử dụng hơn, với cả đăng nhập bằng mạng xã hội thì thấy hay dc làm ở frontend với CSR hơn
@none4614
2 жыл бұрын
Bạn có thể giải thích cho mình chỗ generateAccessToken với generateRefreshToken tại sao lại KHÔNG dùng Async được ko bạn Thanks
@DanielTruongDev
2 жыл бұрын
do jwt.sign synchronous nha b
@lamvanbao4774
2 жыл бұрын
a ơi cho em hỏi khi nào mình nên dùng redux saga và dự án vậy a
@DanielTruongDev
2 жыл бұрын
Redux saga là middleware để xử lý bất đồng bộ th, thì với mấy cái project đơn giản a dùng luôn redux toolkit để xử lý bất đồng bộ bằng cách chia ra 3 action riêng: start, success, failed. Còn e có thể xài Redux Thunk hoặc Redux Saga để xử lý bất đồng bộ như API call, Thunk thì dễ hiểu hơn Saga vì Saga sẽ khá phực tạp về logic nên sẽ phù hợp với mấy project lớn hơn
@toandokhanh1209
Жыл бұрын
đỉnh thật sự
@tutosolve
Жыл бұрын
bình thường , t cũng chưa làm đc như vậy
@nguyentuantruong4815
2 жыл бұрын
A ơi cho e hỏi khi khi nào cần đưa dữ liệu từ api về redux ạ.
@DanielTruongDev
2 жыл бұрын
này là phần frontend nha em, gọi api r lưu về redux để xài thui, e có thể check video về redux toolkit của a để biết thêm cách gọi như thế nào
@quannguyenviet643
Жыл бұрын
đi làm thì nó có thực sự giống vậy không bạn?
@DanielTruongDev
Жыл бұрын
Thường thì project bên ngoài họ sẽ xài mấy cái có sẵn như là Auth0, Clerk, NextAuth chẳng hạn, chứ ít khi nào mà cần phải tự tạo từ đầu như này lắm, này chủ yếu để hiểu về cái jwt hoạt động ra sao th
@quannguyenviet643
Жыл бұрын
Thanks bạn nhiều
@navuong7953
2 жыл бұрын
đoạn 24:17 ấy mình thấy bạn có dùng user._doc mình có consolog thử ra thì thấy user và user._doc đều giống nhau nhưng nếu mình bỏ _doc đi thì khi đăng nhập code nó lại chạy không bình thường là sao vậy bạn? Mình có tìm thử rồi nhưng không thấy chỗ nào nói về chức năng của _doc bạn ạ
@DanielTruongDev
2 жыл бұрын
mình xài ._doc là để loại bỏ thằng password ra khỏi cái document nên nếu bạn bỏ nó ra thì nó kh hoạt động được, nhưng mà thật ra kh nên xài thg ._doc vì nó là internal storage, bạn có thể xài .exclude(“password”) để loại nó ra, sau này mình cũng sẽ kh xài thg ._doc này nữa :D
@PhongNguyen-ey8wh
2 жыл бұрын
Sao ko dung nodemon di anh
@nhiex23
Жыл бұрын
a ơi cho e hỏi e là cái refreshToken , sao lúc chạy nó cứ báo lỗi ở dòng code này vậy ạ " const refreshToken = req.cookies.refreshToken; "
@quangthanhle881
Жыл бұрын
có thể bạn quên chưa import cookie-parser ở file index hoặc server
@DavidJames535
2 жыл бұрын
Góp ý :Cái phần await new User , await User.find() , anh làm sai nhé ! . Vì mấy hàm này không trả ra Promise cho nên anh gọi await như thế để làm gì ạ ? . Nhưng mà cảm ơn bài giảng của anh nhé hihi
@HuyTruong-hu9sn
2 жыл бұрын
bạn chắc ko, thật sự mình thấy cần await. Bạn gthich rõ hơn ở chỗ này đc ko
@DanielTruongDev
2 жыл бұрын
@@HuyTruong-hu9sn cái new User thì kh cần await đâu bạn vì User được tạo trong database bằng cái .save mới cần await vì nó return Promise, còn cái .find thì cần await đấy vì nó return Promise nên bạn kia cmt đúng 1 phần thui
@vukhang510
2 жыл бұрын
bạn cho mình hỏi mình code bài này của bạn bằng typescipt ấy tới cái đoạn const refreshToken = req.cookies.refreshToken, khi mình run thì nó báo TypeError: Cannot read properties of undefined (reading 'refreshToken') thì đây là lỗi gì được không vậy
@DanielTruongDev
2 жыл бұрын
chắc do b chưa khai báo type cho thg object đó là bao gồm refreshToken r type là undefined nên nó báo lỗi ấy
@hungnguyenquang7516
2 жыл бұрын
em muốn hỏi fix được chưa ạ? e install cookie-parser là được á
@bentran219
2 жыл бұрын
anh ơi cho em hỏi nếu em tạo 2 user 1 user là admin và 1 user bình thường khi admin login rồi đính refreshToken của admin vào cookies rồi vậy thằng user lúc này cũng đăng nhập thì cái refreshToken của user sẽ đính vào cookies vậy thì làm sao có thể renew lại token của thằng admin được ạ ? không lẽ chỉ được login 1 lần với 1 tài khoản ạ ? giả sử em có 2 cái smartphone khác nhau và mỗi cái đăng nhập 1 tài khoản thì làm sao để mình có thể renew cái token của tài khoản mình đang sử dụng ạ ? em chưa hiểu logic chỗ này lắm
@DanielTruongDev
2 жыл бұрын
lúc e log out thì Cookies sẽ được clear r nên k ảnh hưởng gì cho lần đăng nhập tiếp theo nhé
@bentran219
2 жыл бұрын
@@DanielTruongDev dạ em bị nhầm, là mỗi thằng client (web browser hay mobile) thì đều có cookie riêng nên ko thể làm theo kiểu phân biệt như trên được. em thắc mắc là cách Fb hoạt động rằng 1 tài khoản được login cả trên app cả trên web vậy có phải nó tạo ra 2 accessToken riêng biệt ứng với mỗi thằng client ko ? nếu đúng như vậy thì có những trường hợp rằng trên 1 web browser chỉ được login 1 tài khoản là sao anh nhỉ ?
@vanphinguyen6028
2 жыл бұрын
anh ơi anh có thể giải thích giúp em tại sao cần lưu lại refreshToken được không ạ
@binhlethanh4121
2 жыл бұрын
khi accessToken hết hạn thì server sẽ dựa vào refreshToken để tạo ra một accessToken mới , rồi gửi về cho client. Có accessToken mới thì phía client mới có thể thực hiện request thành công.
@sonle23-j2d
2 жыл бұрын
anh ơi cho em hỏi với ạ, vậy khi mình đăng nhập xong mình cứ dùng web liên tục, cứ hết hạn token xong lại refresh token mới, nhưng khi mình không dùng trong 1 khoảng thời gian thì logout ra. Anh có thể giải thích cho em tại sao không ạ
@DanielTruongDev
2 жыл бұрын
cái kh dùng trong 1 khoảng thời gian sẽ bị logout mà e đề cập thì nó sẽ là logic của code th, chứ kh phụ thuộc vào JWT nữa, JWT hết hạn sau 1 khoảng thời gian, nếu e k refresh token thì khi e gọi API sẽ bị fail vì kh có token headers
@DanielTruongDev
2 жыл бұрын
còn kh e có thể đặt hạn của refresh token tầm 5 phút rồi nếu user kh chuyển trang mặc dù lúc đó access token cũng đã hết hạn mà sau 5 phút user kh chuyển trang để refresh token thì mình cho user out ra đăng nhập lại th vì refresh token cũng đã hết hạn luôn r
@sonle23-j2d
2 жыл бұрын
vâng cảm ơn anh nhiều ạ
@khangtranquoc3899
2 жыл бұрын
anh ơi em bị lỗi "cannot read property refreshToken".Mong anh phản hồi ạ
@duythinho806
2 жыл бұрын
không biết bạn fix được chưa nếu chưa được là do chưa cài package cookie-parser
@tieucuongmedia970
2 жыл бұрын
Mình bị lỗi" TypeError: res.status is not a function" và bị out khỏi chương trình ! là thế nào vậy bạn ? Mình xin hướng khắc phục. Mình đã đặt return ngay trước res.status nhưng vẫn !.
@minhduydao1312
5 ай бұрын
vì trong try bạn return về 1 hàm và catch bạn return err nên nó lỗi á
@AlanTran18
2 жыл бұрын
Anh Daniel ơi, sau khi coi và thực hành những kiến thức có trong Video, em đang gặp phải 1 vấn đề ở chỗ Logout. Khi em Login thì create accessToken và create refreshToken sau đó save refreshToken vào 1 array của user trong MongoDB vậy khi em muốn Logout thì em phải xóa refreshToken trong array đó đi, tức là em phải xác định được thằng user. VẬY CÓ PHẢI EM PHẢI TRUYỀN PARAMS LÀ ID CỦA USER TRONG ROUTES LOGOUT KHÔNG Ạ ? EM THẤY NÓ CÓ VẺ HƠI BẤT TIỆN. mong được anh giải đáp ạ
@syres0201
2 жыл бұрын
Bạn tạo array tại 1 user thôi thì rất bất tiện. Bạn nên tạo 1 bảng token r đặt tên là Tokens để type: [String] tức là array string như v sẽ tiện hơn vì cơ bản chỗ lưu tokens mục đích là để không trùng nhau thôi. Nên sẽ kh liên quan đến mấy bảng khác
@jockerthe8189
2 жыл бұрын
em chưa coi phần 3 nhưng coi phần này thấy cái bug to đùng luôn . đó khi khi logout rồi vẫn logout đc tiếp vì token vẫn chưa hêt time :( , còn cái mảng refreshTokens kia khi post url refreshToken nó không xóa refreshToken cũ lúc login sinh ra => Thành ra cả 2 refreshToken đều hoạt động .Thậm chí refreshToken càng nhiều thì càng càng có nhiều refreshToken có thể lấy token
@jockerthe8189
2 жыл бұрын
em chưa coi phần 3 lên ko rõ anh đã fix bug này chưa . em cứ cmt đã kẻo xem xong phần 3 lại quên
@DanielTruongDev
2 жыл бұрын
accessToken vẫn xài được sau khi logout là bth mà e, e lên check của Auth0 thì sau khi e logout e vẫn xài token đó đc bth, bởi v nên accessToken là ngắn hạn đó, còn việc giữ refreshToken hay xoá đi thì mỗi ng 1 ý kiến th, e muốn bảo mật hơn thì cứ việc xoá, nên kh hẵng là bug nhé :D
@jockerthe8189
2 жыл бұрын
@@DanielTruongDev vâng anh .
@jockerthe8189
2 жыл бұрын
@@DanielTruongDev anh có video nào về socket io hoặc react hook form ko anh
@mfnhhfc
5 ай бұрын
video dài quá em
@baodoan5420
2 жыл бұрын
không có link git hả lưu code hả bạn
@DanielTruongDev
2 жыл бұрын
ở phần mô tả trong video part cuối có á bạn
@baodoan5420
2 жыл бұрын
@@DanielTruongDev video bạn nói rất dễ hiểu, đã sub :D ủng hộ dài dài
@huutinnguyen3075
2 жыл бұрын
Cho e xin file .env với a
@devlamdep
2 жыл бұрын
tại sao khi lưu refresh token trên cookíe , khi deploy lên thì req.cookíe.refreshtoken có nhỉ . đã mỡ withCredentials: true . mong được giúp đỡ
@s-movie6840
Жыл бұрын
jwt.verify(refreshToken, process.env.SECRET_KEY_REFRESH_TOKEN, (err, user) => { if (err) { console.log(err); } console.log(user); const newAccessToken = authController.generateAccessToken(user) const newRefreshToken = authController.generateRefreshToken(user) ai cho mình hỏi chút là sao user ở đây lại là undefine nhir?
@kitygaming3668
Жыл бұрын
process.env.JWT_ACCESS_KEY cái chỗ này mình không biết đặt trong cái .env như nào cả huhu. Ai biết ko chỉ mình với
Пікірлер: 96