em thực sự khóc cạn nước mắt khi ko chịu xem hết video của a sớm, hôm trước e có thấy video của a mà e chỉ lướt qua, xong e được giao task làm liên quan JWT này, e loay hoay đủ kiểu lỗi refreshToken, lỗi verifyToken, lỗi Logout vẫn còn token..... Giờ thì e hiểu hơn nhiều rồi. Phần của a là phần BE, còn phần FE gửi, check cũng còn nhiều cái phải làm lắm. Cảm ơn a vì video hữu ích. 2h22 sáng cay lè mắt, xem từng tí 1 video của a cho thông luồng. hihi
cám ơn anh, rất mong anh làm video phần 2 của chủ đề này jwt author handle bên phía client, và gửi request đi attach token trong cookie chứ không phải bearer
Video được đầu tư và rất bổ ích. Nhưng mình nghĩ nó sẽ tốt hơn nữa nếu bác dùng 1 chút body language như là cử chỉ 2 tay thay vì mỗi biểu cảm khuôn mặt để diễn giải lời nói ở những phần quay cận người (Intro, khái niệm...)
Mình mới học nhưng chưa hiểu lắm mong holetex giải thích hộ đoạn cuối của video: Mình login cũng tạo ra accessToken mới và refresh cũng tạo accessToken mới vậy vì sao phải làm refresh để làm gì? Nó được ứng dụng như thế nào trong thực tế ?
tại sao phải truyển token qua headers vậy anh mà không phải là một req.body. Ví dụ trong trường hợp của em, user sẽ được gửi một token khi login và lưu nó trên redux store. Vậy khi cần dispatch một action nào đó em có thể dùng getState để lấy token và truyền trực tiếp thông qua api axios không ạ
Bạn ơi, cho mình hỏi: thực tế thì trình duyệt nó tự request để gia hạn hay thế nào nhỉ? Giá như video của bạn nói thêm thực tế người ta lưu cái gì lên database nữa thì tốt
Em có thể tham khảo bài viết này, mình có thể sử dụng axios interceptors em nhé stackoverflow.com/questions/54531731/how-to-refresh-jwt-tokens-in-react-js-application
Anh ơi e học html và CSS đc 2 tháng rồi mà vẫn còn mông lung chắc do e chậm hiểu có thể làm clip chia sẻ cách học chia sẻ kinh nghiệm học của anh đc không ạ e cảm ơn
Do giải thuật sử dụng để mã hoá đó em. Em tham khảo thêm ở đây www.google.com.vn/amp/s/auth0.com/blog/amp/json-web-token-signing-algorithms-overview/ Cơ bản thì nó sử dụng hàm băm (hash function) vi.wikipedia.org/wiki/H%C3%A0m_b%C4%83m
Anh oi vậy cái refresh token chỉ để lấy lại cái access token mới thôi à, bảo vệ quá trình vào các route là cái verify access token ạ? (Trong thời gian ngắn là hết tác dụng) các route khác vào thì client lại xin access token mới?
Đúng rồi em. Và em có thể tham khảo cách để xin access token mới từ phía client ở link này stackoverflow.com/questions/54531731/how-to-refresh-jwt-tokens-in-react-js-application
@@holetex Như này máy chủ API liên tục phải trả lại accesstokenk khi client gửi lên refreshtoken xin lại để vào route. Có cái này vào hệ thống sẽ chậm hơn bạn nhỉ?
a ơi cho em hỏi cái thg refreshtoken bên Server sẽ tự động xử lý đi refresh token cấp lại accesstoken cho client hay client tự catch lỗi expired token rồi sau đó đi call api refreshtoken vậy ạ ?, cuối cùng thì e vẫn không hiểu thằng refreshtoken này nó được lưu ở đâu vậy ạ, e hiểu nguyên lý nhưng bước lưu thg refreshtoken còn khá mơ hồ.
refreshtoken lưu bên phía client giống như accesstoken nha em. FE sẽ tự check nếu có lỗi là expire thì sẽ dùng refreshtoken để lấy accesstoken mới. Nếu xài axios thì em có thể tham khảo xài axios interceptors để xử lý trường hợp expire token
chào anh em mới tìm hiểu về cơ chế xác thực qua jwt , em có 1 điều thắc mắc mà tìm mãi trên mạng không thấy cách giải quyết , khi mình nhận đc jwt thì mình lưu trữ ở đâu phía client anh, cụ thể em là web client và ko dùng lib phía frontend. cảm ơn anh
cái này liên quan tới việc bạn setup middleware ở phía server, nếu trong trường hợp bn đặt xác thực token trc và hợp lệ thì localhost/books sẽ trả data và ngược lại
Anh cho em hỏi tý ạ. Em đang có 2 server (.Net và spring boot) có cách nào để 2 con này dùng chung 1 bộ token được không ạ? nếu 2 bên mình dùng chung secret key thì có dùng chung token được không ạ?
duoc ban oi, cai dat jwt cho ca 2 server, ve co ban, server authenticate se generate ra token va gui ve phia client, Client se gui token len server kia de authorization. Co che jwt cua 2 server duong nhien la giong nhau, chi khac nhau cach implement.
Dạ a ơi . Làm sao để mình biết token đó hết hạn v ạ . Và cách kiểm tra là mỗi lần request mình sẽ kiểm tra token đó hay là mình sẽ kiểm tra trước khi vào web app đó xem token đó còn hạn hay không ? . Và việc kiểm tra mình gọi api về server kiểm tra hay là ở dưới client v ạ ?
Khi mình gửi request lên server mà bị trả về lỗi Forbidden thì mình sẽ cần gọi tới api refresh token để lấy access token mới. Em có thể tham khảo cách để xin access token mới từ phía client ở link này stackoverflow.com/questions/54531731/how-to-refresh-jwt-tokens-in-react-js-application
@@holetex Và trong trường hợp refresh token cũng có hạn mà khi đang truy cập api lấy lại access token thì ở dưới client mình phải bắt như thế nào v ạ. để cho người dùng logout ra login lai để có refresh token mới ạ ?
Việc lưu lên db bởi vì mình có thể chủ động remove nó khỏi db khi người dùng thực hiện Đăng xuất. Bạn có thể dùng method verify của jwt nhưng giả sử trường hợp thời gian expries của refresh tokens này là 7 ngày thì khi người dùng thực hiện Đăng xuất trước thời gian này thì refresh token vẫn hợp lệ (mình không thể chủ động expries một token). Trong thực tế thì thường để expries time cho refresh tokens là 7 ngày
Cảm ơn anh nhiều, xem qua vài video cộng với đọc một vài bài viết mà vẫn chưa thật sự hiểu rõ, xem video của anh xong thì em đã hiểu rồi ạ ❤❤❤❤
Cảm ơn anh nhiều ạ, e đang bị rối cách xử lí của FE và BE phần authorization, xem xong bài giảng của anh thì em clear được nhiều rồi ❤
Uầy 38p thui mà quá nhiều thứ cám ơn a :>
Hay quá anh ơi, a ra video đúng lúc em đang tìm hiểu JWT luôn á, Cảm ơn anh rất nhiều
em thực sự khóc cạn nước mắt khi ko chịu xem hết video của a sớm, hôm trước e có thấy video của a mà e chỉ lướt qua, xong e được giao task làm liên quan JWT này, e loay hoay đủ kiểu lỗi refreshToken, lỗi verifyToken, lỗi Logout vẫn còn token..... Giờ thì e hiểu hơn nhiều rồi. Phần của a là phần BE, còn phần FE gửi, check cũng còn nhiều cái phải làm lắm. Cảm ơn a vì video hữu ích.
2h22 sáng cay lè mắt, xem từng tí 1 video của a cho thông luồng. hihi
FE thì dùng useEffect của react mà check thôi nhỉ
bài giảng rất chi tiết, dễ hiểu và có tâm. Cảm ơn bạn rất nhiều.
Anh truyền đạt rất dễ hiểu. Cảm ơn anh. 🤗🤗🤗
cảm ơn anh, chúc anh có nhiều sức khoẻ và thành công trong công việc !!
Dễ hiểu nhưng lại rất hữu ích, nâng cao nhiều kiến thức khó kiếm được trên mạng
Hóng đc xem thêm nhiều video bổ ích của a nữa ạ ^_^
Hay và dễ hiểu quá anh, mong anh làm về chủ đề WebSockets với ạ
video khá hay và bổ ích, cảm ơn a nhiều.
hóng anh ra thêm nhìu video nữa
cám ơn anh, rất mong anh làm video phần 2 của chủ đề này jwt author handle bên phía client, và gửi request đi attach token trong cookie chứ không phải bearer
anh giảng hay quá anh ơi
hay quá. ra thêm nhiều video nha
hay anh oi ra them nhieu video nua di a
Anh dạy hay. Mong anh ra nhiều video nữa.
bài giảng rất rõ ràng. với chỉ e làm sao Server API này làm sao đưa nó lên hostinger vậy a
Làm series về backend đi a, video hay quá a
hóng video làm streaming với react native bác
Hay quá
cảm ơn anh
truyền nhân của Web Dev Simplified kk
hay quá a ơi
rất hay ạ
anh oi cho em hỏi là register thì có cần tạo accessToken không ạ hay chỉ cần với login thôi ạ
Video được đầu tư và rất bổ ích. Nhưng mình nghĩ nó sẽ tốt hơn nữa nếu bác dùng 1 chút body language như là cử chỉ 2 tay thay vì mỗi biểu cảm khuôn mặt để diễn giải lời nói ở những phần quay cận người (Intro, khái niệm...)
Cảm ơn góp ý của bạn rất nhiều!
hay đó bác
Anh làm seri về nodeJS đi anh.~
Mình mới học nhưng chưa hiểu lắm mong holetex giải thích hộ đoạn cuối của video: Mình login cũng tạo ra accessToken mới và refresh cũng tạo accessToken mới vậy vì sao phải làm refresh để làm gì? Nó được ứng dụng như thế nào trong thực tế ?
Theo mình thấy để tránh user nó gọi request liên tục ấy b, còn tiếp đó thì mình ko rõ :')
vi access token het hieu luc sau 1 khoang thoi gian nen phai refresh lai de lay access token moi
em cảm ơn anh ạ!
😍😍
Goood job , Thanks a
a làm về reactjs qua dự án thực tế đi ạ
0:50 em thắc mắc jwt được dùng cho authorization, vậy authentication dùng với gì ạ, em tưởng nó dùng cho cả authen và autho :))
Anh zai làm series về Reactjs đi anh zai
Like cho bạn
Anh làm sâu về Axios khi làm việc với react đi ạ
tại sao phải truyển token qua headers vậy anh mà không phải là một req.body. Ví dụ trong trường hợp của em, user sẽ được gửi một token khi login và lưu nó trên redux store. Vậy khi cần dispatch một action nào đó em có thể dùng getState để lấy token và truyền trực tiếp thông qua api axios không ạ
vì nó theo chuẩn http bn à
anh có thể làm thêm phần front-end được không ạ
Em cảm ơn video của anh rất huữ ích ạ, anh ơi anh dùng extension gì mà vs code đẹp thế ạ
Theme dracula em nhé
A cho e xin code để client gửi token lên server, hoặc tài liệu về việc gửi token không ạ, em cảm ơn.
sao viết hàm middlerware ở dưới route mà nó không lỗi nhỉ
Bạn ơi, cho mình hỏi: thực tế thì trình duyệt nó tự request để gia hạn hay thế nào nhỉ?
Giá như video của bạn nói thêm thực tế người ta lưu cái gì lên database nữa thì tốt
Trình duyệt ko tự request được bạn. Nó sẽ do phần frontend thực hiện. Vd như frontend bạn viết bằng Reactjs thì sẽ gọi refreshToken api trong reactjs
@@holetex cảm ơn bạn
@@holetex cho em hỏi làm sao mình biết được accessToken sắp hết hạn để mình có thể gọi api refreshToken để trả về cho client accessToken mới anh nhỉ ?
Em có thể tham khảo bài viết này, mình có thể sử dụng axios interceptors em nhé
stackoverflow.com/questions/54531731/how-to-refresh-jwt-tokens-in-react-js-application
@@holetex em hiểu rồi, cảm ơn anh nhé !
nó giống session được database đúng ko anh
Anh ơi e học html và CSS đc 2 tháng rồi mà vẫn còn mông lung chắc do e chậm hiểu có thể làm clip chia sẻ cách học chia sẻ kinh nghiệm học của anh đc không ạ e cảm ơn
2 cái đó là phần dễ nhất thì phải
Secret Key trong file env nó có ý nghĩa gì vậy anh?
Thường các API em sử dụng của một bên thứ 3 sẽ có thông tin này để có thể lấy được dữ liệu. Nên cần bảo mật thông tin này
Tại sao mỗi lần login mình đều nhận được 1 accessToken khác nhau trong khi thuật toán mã hóa + payload + secret của mình vẫn giữ nguyên vây anh?
Do giải thuật sử dụng để mã hoá đó em. Em tham khảo thêm ở đây
www.google.com.vn/amp/s/auth0.com/blog/amp/json-web-token-signing-algorithms-overview/
Cơ bản thì nó sử dụng hàm băm (hash function)
vi.wikipedia.org/wiki/H%C3%A0m_b%C4%83m
cho em hỏi cách deploy Micro services ạ?
em bi payload is required la sao vay admin oiii
Theo anh express framework còn đáng học không ạ :( em đang mò mẫm cày mà nghe nói giờ họ dùng nest cả rồi
Em cứ nắm vững 1 cái rồi học sang kiến thức mới nhé
E hỏi chút, sao refreshToken phải lưu arr nhỉ
đây là anh đấy đang giả định, vì không dùng db cụ thể. Như theo thực tế thì nó sẽ đc lưu vào db
Làm web thì web thưong mại điện tử dùng hay hay web bằng NodeJS mới cần anh
Mọi web áp dụng microservices đều xài em, ko chỉ nodejs
Anh ơi cho em hỏi cái refreshToken nếu không set timeout thì nó có khác gì cái accessToken vô thời hạn đâu
ảnh hưởng về mặt security
Anh oi vậy cái refresh token chỉ để lấy lại cái access token mới thôi à, bảo vệ quá trình vào các route là cái verify access token ạ? (Trong thời gian ngắn là hết tác dụng) các route khác vào thì client lại xin access token mới?
Đúng rồi em. Và em có thể tham khảo cách để xin access token mới từ phía client ở link này
stackoverflow.com/questions/54531731/how-to-refresh-jwt-tokens-in-react-js-application
@@holetex Dạ, hay quá, thanks Anh,
@@holetex Như này máy chủ API liên tục phải trả lại accesstokenk khi client gửi lên refreshtoken xin lại để vào route. Có cái này vào hệ thống sẽ chậm hơn bạn nhỉ?
anh có khóa học cho back-end ko ah, đặc biệt là nodejs ạ ??
cảm ơn anh nhiều ạ
Hiện tại anh không có em ạ
a ơi cho em hỏi cái thg refreshtoken bên Server sẽ tự động xử lý đi refresh token cấp lại accesstoken cho client hay client tự catch lỗi expired token rồi sau đó đi call api refreshtoken vậy ạ ?, cuối cùng thì e vẫn không hiểu thằng refreshtoken này nó được lưu ở đâu vậy ạ, e hiểu nguyên lý nhưng bước lưu thg refreshtoken còn khá mơ hồ.
refreshtoken lưu bên phía client giống như accesstoken nha em. FE sẽ tự check nếu có lỗi là expire thì sẽ dùng refreshtoken để lấy accesstoken mới. Nếu xài axios thì em có thể tham khảo xài axios interceptors để xử lý trường hợp expire token
chào anh em mới tìm hiểu về cơ chế xác thực qua jwt , em có 1 điều thắc mắc mà tìm mãi trên mạng không thấy cách giải quyết , khi mình nhận đc jwt thì mình lưu trữ ở đâu phía client anh, cụ thể em là web client và ko dùng lib phía frontend. cảm ơn anh
Em lưu vào localStorage cũng được nhé
@@holetex vâng, cảm ơn anh
bác nào có project về phần login logout register bằng nodejs jwt database không cho mình tham khảo với ạ
anh ơi trường hợp user gõ thẳng localhost/books ở trên thanh địa chỉ thì server verify kiểu gì ạ, trong trường hợp token vẫn chưa hết hạn ạ, em cảm ơn
cái này liên quan tới việc bạn setup middleware ở phía server, nếu trong trường hợp bn đặt xác thực token trc và hợp lệ thì localhost/books sẽ trả data và ngược lại
Vậy làm sao để gửi token từ client về server ạ, dùng .http em ko hiểu lắm
Em viết code frontend sử dụng JavaScript để thực hiện việc này nhé
Anh cho em hỏi tý ạ. Em đang có 2 server (.Net và spring boot) có cách nào để 2 con này dùng chung 1 bộ token được không ạ? nếu 2 bên mình dùng chung secret key thì có dùng chung token được không ạ?
duoc ban oi, cai dat jwt cho ca 2 server, ve co ban, server authenticate se generate ra token va gui ve phia client, Client se gui token len server kia de authorization. Co che jwt cua 2 server duong nhien la giong nhau, chi khac nhau cach implement.
Dạ a ơi . Làm sao để mình biết token đó hết hạn v ạ . Và cách kiểm tra là mỗi lần request mình sẽ kiểm tra token đó hay là mình sẽ kiểm tra trước khi vào web app đó xem token đó còn hạn hay không ? . Và việc kiểm tra mình gọi api về server kiểm tra hay là ở dưới client v ạ ?
Khi mình gửi request lên server mà bị trả về lỗi Forbidden thì mình sẽ cần gọi tới api refresh token để lấy access token mới.
Em có thể tham khảo cách để xin access token mới từ phía client ở link này
stackoverflow.com/questions/54531731/how-to-refresh-jwt-tokens-in-react-js-application
@@holetex Và nếu như thực tế thì mình có cần tạo thêm 1 refresh token từ server để gửi cho client lấy access token không v ạ ? Em cám ơn ạ
Có chứ em, trong video anh có chia sẻ cách tạo cả refresh token mà
@@holetex Và trong trường hợp refresh token cũng có hạn mà khi đang truy cập api lấy lại access token thì ở dưới client mình phải bắt như thế nào v ạ. để cho người dùng logout ra login lai để có refresh token mới ạ ?
chính xác em ạ
Cho mình hỏi tiếp, sao phải lưu refresh_token lên database, thời gian hết hạn cái token refresh này ở các dự án thực tế mọi người hay để bao lâu?
Việc lưu lên db bởi vì mình có thể chủ động remove nó khỏi db khi người dùng thực hiện Đăng xuất. Bạn có thể dùng method verify của jwt nhưng giả sử trường hợp thời gian expries của refresh tokens này là 7 ngày thì khi người dùng thực hiện Đăng xuất trước thời gian này thì refresh token vẫn hợp lệ (mình không thể chủ động expries một token).
Trong thực tế thì thường để expries time cho refresh tokens là 7 ngày
@@holetex cảm ơn bạn nhiều!
nhưng nếu tạo refresh token với expire unlimit thì quay trở lại việc security, nếu bị mất cái refresh token cũng tượng tự như bị mất token.
Đối với refreshtoken thì mình cũng cần set expire time, trong video mình quên ko set expire time cho nó
Cho e hỏi là refresh token hết hạn nhưng user không logout thì làm sao để tạo lại refresh token ạ. Hay là bắt user phải login lại ạ?
mình nghĩ nếu sét thời gian cho refresh token 1 thời gian cố định thì khi kết thời gian phía FE sẽ xử lí logout yêu cầu user phải đăng nhập lại
có dạy python django ko anh
hiện tại thì chưa em ạ
hello anh >
hê lô em :D
thầy dạy k hiểu xem youtube lại hiểu :V ảo
anh đừng nhấn nhá giọng ạ, nói tự nhiên thì sẽ hay hơn.
klq nhưng anh phát âm "s" ở nhiều chỗ không cần ạ =))
Không sai về logic nhưng mình muốn nói Bearer not Beaer :))
Nội dung cuối cảm thấy không trọn vẹn lắm. Người mới có cảm giác hơi mơ hồ.
1.5 x
Mình thấy anh này làm giống clip này:
ruclips.net/video/mbsmsi7l3r4/видео.html
đúng rồi em, anh có tham khảo video này khi xây dựng code phần backend nodejs auth. Anh có cập nhật trong phần mô tả
hay quá a ơi
quá hay a ơi