Học lập trình cùng Nam
Học lập trình cùng Nam
  • 124
  • 202 092

วีดีโอ

ASP.NET - Phần 25 - Rate Limiting
มุมมอง 648วันที่ผ่านมา
Đọc thêm: devblogs.microsoft.com/dotnet/announcing-rate-limiting-for-dotnet/ Tải bombardier: github.com/codesenberg/bombardier/releases
ASP.NET - 24 - Sử dụng CORS
มุมมอง 497วันที่ผ่านมา
Trong bài này chúng ta sẽ tìm hiểu CORS là gì, tại sao chúng ta cần nó và cách cấu hình CORS trong ASP.NET.
ASP.NET - Phần 23 - Giải bài tập: viết một OpenIdConnect server, phần 2
มุมมอง 26314 วันที่ผ่านมา
Link đến project: github.com/daohainam/lets-learn-aspnet/tree/main/Projects/MyOidcServer
ASP.NET - Phần 22 - Giải bài tập: viết một OpenIdConnect server, phần 1
มุมมอง 46914 วันที่ผ่านมา
Phần 1: Tìm hiểu giao thức OpenIdConnect và xây dựng bộ khung ban đầu. Link trong bài: - learn.microsoft.com/en-us/aspnet/core/security/authentication/configure-oidc-web-authentication?view=aspnetcore-8.0 - openid.net/developers/how-connect-works/ - Đặc tả: openid.net/specs/openid-connect-core-1_0.html - Tạo key: mkjwk.org/
ASP.NET - Phần 21 - Policy-based Authorization
มุมมอง 90121 วันที่ผ่านมา
Đọc thêm về policy-based authorization: learn.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-8.0 Mã nguồn trong clip: github.com/daohainam/lets-learn-aspnet/tree/eec28fb9f1f7249d649abf77638c569494365088/Projects/JwtDemo
ASP.NET - Phần 20 - Role-based Authorization
มุมมอง 57728 วันที่ผ่านมา
ASP.NET - Phần 20 - Role-based Authorization
Không phải lúc nào cũng cần gọi await
มุมมอง 1.6Kหลายเดือนก่อน
Project được sử dụng trong clip: github.com/daohainam/asyncdemo/tree/master/CallingAsyncDemo
ASP.NET - Phần 19 - Authentication với Json Web Token (JwtBearer)
มุมมอง 875หลายเดือนก่อน
Khuyến khích xem thêm: th-cam.com/play/PLRLJQuuRRcFncdTYQPLuWnFFP0mMHwMxu.html
ASP.NET - Phần 18 - Chương trình đầu tiên với authentication và authorization
มุมมอง 969หลายเดือนก่อน
!!! Quan trọng: nhớ xem bài trước khi xem bài này !!! Link chương trình: github.com/daohainam/lets-learn-aspnet/tree/4bbf5e0f6449d7486d1e1b0bf2f8b6df5e5193e1/Projects/SecurityDemo
ASP.NET - Phần 17 - Giới thiệu các khái niệm trong Authentication và Authorization
มุมมอง 692หลายเดือนก่อน
Trong bài này chúng ta làm quen với Authentication và Authorization trong ASP.NET, chúng ta cần nắm các khái niệm này để có thể hiểu cách hoạt động và sử dụng trong các phần sau. Tham khảo thêm: th-cam.com/play/PLRLJQuuRRcFncdTYQPLuWnFFP0mMHwMxu.html
ASP.NET - Phần 16 - Https Redirection
มุมมอง 465หลายเดือนก่อน
Link tài liệu trong bài: learn.microsoft.com/en-us/aspnet/core/security/enforcing-ssl Link code MyHttpsRedirectionMiddleware: github.com/daohainam/lets-learn-aspnet/tree/main/Projects/MiddlewareDemo/Middleware
ASP.NET - Phần 15 - Session
มุมมอง 7322 หลายเดือนก่อน
Trong bài này chúng ta sẽ học Session là gì, cách thức hoạt động và cách sử dụng trong ASP.NET. Chúng ta cũng demo việc xóa, copy session cookie, cũng như cấu hình để lưu trữ session vào trong Sql Server. learn.microsoft.com/en-us/aspnet/core/fundamentals/app-state?view=aspnetcore-8.0#session-state
ASP.NET - Phần 14 - Model binding
มุมมอง 2872 หลายเดือนก่อน
learn.microsoft.com/en-us/aspnet/core/mvc/models/model-binding?view=aspnetcore-8.0
ASP.NET - Phần 13 - Thực hành viết một middleware
มุมมอง 8552 หลายเดือนก่อน
Nhiệm vụ: Viết một middleware xác thực client thông qua API Key và lấy về thông tin client. Project: github.com/daohainam/lets-learn-aspnet/tree/d6a5b28ff410ac5cedbf37ab5d883085a2933fe3/Projects/MiddlewareDemo
ASP.NET - Phần 12 - Giới thiệu về Middleware
มุมมอง 7302 หลายเดือนก่อน
ASP.NET - Phần 12 - Giới thiệu về Middleware
ASP.NET - Phần 11 - Configuration và Options pattern
มุมมอง 6332 หลายเดือนก่อน
ASP.NET - Phần 11 - Configuration và Options pattern
ASP.NET - Phần 10 - Bài tập: Nâng cấp ứng dụng MySession và thêm integration test
มุมมอง 4482 หลายเดือนก่อน
ASP.NET - Phần 10 - Bài tập: Nâng cấp ứng dụng MySession và thêm integration test
Toàn bộ kiến thức về ConfigureAwait
มุมมอง 1.2K2 หลายเดือนก่อน
Toàn bộ kiến thức về ConfigureAwait
ASP.NET - Phần 9 - Bài tập: clone lại tính năng Session của ASP.NET
มุมมอง 9002 หลายเดือนก่อน
ASP.NET - Phần 9 - Bài tập: clone lại tính năng Session của ASP.NET
ASP.NET - Phần 8 - Làm việc với HttpResponse
มุมมอง 7333 หลายเดือนก่อน
ASP.NET - Phần 8 - Làm việc với HttpResponse
Tìm hiểu về virus máy tính - 1
มุมมอง 6133 หลายเดือนก่อน
Tìm hiểu về virus máy tính - 1
ASP.NET - Phần 7 - Làm việc với HttpRequest
มุมมอง 7093 หลายเดือนก่อน
ASP.NET - Phần 7 - Làm việc với HttpRequest
ASP.NET - Phần 6 - HttpContext
มุมมอง 1.2K3 หลายเดือนก่อน
ASP.NET - Phần 6 - HttpContext
ASP.NET - Phần 5 - Bài tập: Viết chương trình To Do List
มุมมอง 1.6K4 หลายเดือนก่อน
ASP.NET - Phần 5 - Bài tập: Viết chương trình To Do List
ASP.NET - Phần 4 - Routing
มุมมอง 1.1K4 หลายเดือนก่อน
ASP.NET - Phần 4 - Routing
ASP.NET - Phần 3 - Các Attribute thường dùng
มุมมอง 1.3K4 หลายเดือนก่อน
ASP.NET - Phần 3 - Các Attribute thường dùng
ASP.NET - Phần 2 - Controller và action method
มุมมอง 1.9K4 หลายเดือนก่อน
ASP.NET - Phần 2 - Controller và action method
ASP.NET - Phần 1 - Giới thiệu về ASP.NET và viết chương trình đầu tiên
มุมมอง 3.8K4 หลายเดือนก่อน
ASP.NET - Phần 1 - Giới thiệu về ASP.NET và viết chương trình đầu tiên
nShop - Day 1 - Giới thiệu khái quát về dự án và những bước đầu tiên cần làm
มุมมอง 2.9K4 หลายเดือนก่อน
nShop - Day 1 - Giới thiệu khái quát về dự án và những bước đầu tiên cần làm

ความคิดเห็น

  • @DungTranVan-og5du
    @DungTranVan-og5du 13 ชั่วโมงที่ผ่านมา

    em mới học c,c++ , html và css thì học .net này được luôn ko ạ anh ?

    • @hoc-lap-trinh
      @hoc-lap-trinh 12 ชั่วโมงที่ผ่านมา

      Chỉ có thử mới biết được 😌

  • @kvi1312
    @kvi1312 วันที่ผ่านมา

    hi anh, khi semaphore.Release(MAX); được 1 lúc sẽ bị lỗi "Adding the specified count to the semaphore would cause it to exceed its maximum count". Ở đây em sử dụng đoạn bên dưới thì sẽ hết, cái này là do Trong ReplaceBox(), việc gọi Release(MAX) sẽ cố gắng tăng count lên MAX permits một lúc đúng không anh ? for (int i = 0; i < MAX; i++) { semaphore.Release(); }

    • @hoc-lap-trinh
      @hoc-lap-trinh วันที่ผ่านมา

      Em lấy bao nhiêu thì trả tối đa bấy nhiêu thôi chứ em trả quá thì nó bị lỗi đó

  • @nhatnguyentruong9960
    @nhatnguyentruong9960 2 วันที่ผ่านมา

    like trước khi xem ❤❤❤

  • @maihieu9425
    @maihieu9425 3 วันที่ผ่านมา

    Anh cho em hỏi là tại sao biến local bình thường phải tự gán giá trị trước khi sử dụng còn, các biến thành viên (field data) trong 1 object thì tự động được gán giá trị mặc định tùy thuộc từng kiểu dữ liệu khi object được khởi tạo ạ? em đọc giải thích ở 1 số chỗ khác rồi nhưng vẫn mông lung, muốn hỏi anh cho chắc chắn ạ 😁

    • @hoc-lap-trinh
      @hoc-lap-trinh 2 วันที่ผ่านมา

      A chưa hiểu câu hỏi lắm, e có ví dụ cụ thể không?

    • @maihieu9425
      @maihieu9425 2 วันที่ผ่านมา

      ​@@hoc-lap-trinh Dạ, Ví dụ: class Animal { public int Age { get; set; } } public static void Main(string[] args){ int localVariable; // không gán giá trị Console.WriteLine(localVariable); // Visual studio sẽ đưa ra cảnh báo: Use of unassigned local variable 'a' Animal dog = new Animal(); Console.WriteLine(dog.Age); // Age sẽ được tự động gán trị 0 } em muốn hiểu bản chất của 1 biến local và biến thành viên của 1 object tại sao lại như vậy đó ạ.

    • @hoc-lap-trinh
      @hoc-lap-trinh วันที่ผ่านมา

      à vì khi gọi new thì vùng nhớ được cấp phát sẽ được reset nên các biến thành phần kia nó mang giá trị mặc nhiên, còm khi em dùng các giá trị trên stack, ví dụ khi sử dụng biến local hoặc dùng stackalloc thì vùng nhớ không được reset, vậy nên nó bắt buộc em phải gán giá trị rồi mới được dùng (vì nếu không giá trị của nó sẽ là ngẫu nhiên)

    • @maihieu9425
      @maihieu9425 16 ชั่วโมงที่ผ่านมา

      @@hoc-lap-trinh Dạ em cảm ơn 😍Cứ phải hỏi anh để anh truyền tải cho kiến thức chuẩn chứ không dám tin ở các nguồn khác hehe 👀

    • @hoc-lap-trinh
      @hoc-lap-trinh 12 ชั่วโมงที่ผ่านมา

      @@maihieu9425 😅mất niềm tin vào cuộc sống thế?

  • @ThuNguyenPhanTai
    @ThuNguyenPhanTai 3 วันที่ผ่านมา

    yêu ơi là yêu 🤩

  • @maihieu9425
    @maihieu9425 3 วันที่ผ่านมา

    Dạ anh ơi cho em hỏi, các biến cục bộ trong 1 function thì chỉ được sử dụng khi mà function được gọi đến, các biến này cũng được dọn dẹp đi khi function thực thi xong, thì nó được cấp phát tĩnh hay cấp phát động ạ?

    • @hoc-lap-trinh
      @hoc-lap-trinh 3 วันที่ผ่านมา

      Ta vẫn gọi nó là cấp phát tĩnh em nhé, khác với cấp phát động là em xin cấp khi cần và có thể giải phóng khi dùng xong, các biến trong function nó luôn tồn tại khi em chạy vào trong function đó, em không phải làm thao tác cấp phát hay giải phóng.

  • @trongthanh5241
    @trongthanh5241 5 วันที่ผ่านมา

    2/1/2025 năm mới, bắt đầu khóa học mới <3

  • @angquangtrung6277
    @angquangtrung6277 6 วันที่ผ่านมา

    Em dám chắc cả việt nam chưa ai làm video về cái này. Cảm ơn anh rất nhiều <3

    • @hoc-lap-trinh
      @hoc-lap-trinh 6 วันที่ผ่านมา

      Hi hi cảm ơn em

  • @viencong
    @viencong 6 วันที่ผ่านมา

    Anh nam cho em hỏi là tại sao đã dùng RSA để encrypt mà lại còn dùng SHA-256 để hash nữa vậy anh? Em cảm ơn ạ.

    • @hoc-lap-trinh
      @hoc-lap-trinh 6 วันที่ผ่านมา

      Anh hỏi trên FB rồi, chờ câu trả lời nhé 😁 facebook.com/share/18iE7kqSje/?mibextid=wwXIfr

    • @viencong
      @viencong 6 วันที่ผ่านมา

      @hoc-lap-trinh vâng anh chúc anh nam đoán tết vui vẻ

    • @viencong
      @viencong 6 วันที่ผ่านมา

      @@hoc-lap-trinh cảm ơn anh nam đã giải đáp thắc mắc <:3

    • @hoc-lap-trinh
      @hoc-lap-trinh 6 วันที่ผ่านมา

      @@viencong có bài trả lời rồi nhé :)

  • @eptraihung7815
    @eptraihung7815 8 วันที่ผ่านมา

    Cảm ơn thầy

  • @angquangtrung6277
    @angquangtrung6277 9 วันที่ผ่านมา

    Càng ngày càng hay anh ơi

  • @cuonganime.5733
    @cuonganime.5733 10 วันที่ผ่านมา

    trước học k hiểu, sau làm project r h quay lại xem lại mới thấm a ạ

    • @hoc-lap-trinh
      @hoc-lap-trinh 10 วันที่ผ่านมา

      Học đi đôi với hành là vậy

    • @cuonganime.5733
      @cuonganime.5733 10 วันที่ผ่านมา

      @hoc-lap-trinh trước e theo học khoá này mà ko thấm dc á a, thấy kiến thức hơi khó, h làm project mới thấy những kiến thức này đã dc a dạy, nên vừa làm vừa quay lại học h mới thấm dần

    • @hoc-lap-trinh
      @hoc-lap-trinh 10 วันที่ผ่านมา

      Trời a thấy nó dễ ợt mà, khó chỗ nào đâu nhỉ 😁

    • @cuonganime.5733
      @cuonganime.5733 8 วันที่ผ่านมา

      @@hoc-lap-trinh chắc tại e ít thực hành á a, nên khó ngấm, h làm project mới ngấm nè a

  • @ThienTran-yd5ty
    @ThienTran-yd5ty 11 วันที่ผ่านมา

    thanks anh Nam nhiều, vids nào cũng chi tiết và bổ ích hết. Không biết vấn đề do laptop em hay sao, clip nào em cũng chỉnh 100% volume mới nghe được, mà nó cũng nhỏ lắm ạ :(

    • @hoc-lap-trinh
      @hoc-lap-trinh 11 วันที่ผ่านมา

      Lạ nhỉ lúc nào a cũng kiểm tra lại, kể c as r từ TH-cam. Để a xem lại xem sao.

  • @quochuyo2999
    @quochuyo2999 11 วันที่ผ่านมา

    được quá anh ơi , nhưng mà mong những video tới mic anh to hơn ạ

  • @maihieu9425
    @maihieu9425 12 วันที่ผ่านมา

    nay em có đọc 1 bài viết trên nhóm ASP,NET Core VN có 1 bạn vừa đi phỏng vấn intern về, bạn bảo leader họ cho live coding 1 web: cho user upload file pdf sao kê, tìm kiếm thông tin sao kê. 😥 em thấy hơi khó, anh nghĩ sao ạ

    • @hoc-lap-trinh
      @hoc-lap-trinh 12 วันที่ผ่านมา

      A thấy dùng đề bài này để test intern thì hoặc là người ra đề /phỏng vấn không có kinh nghiệm, hoặc là công ty đó đủ người rồi :D. Đề bài để phỏng vấn hoặc test nó phải cho thấy được người làm là người như thế nào, trình độ ra sao chứ không phải một dạng đánh đố về một thứ thật cụ thể. Anh đi phỏng vấn ở công ty này chắc cũng rớt thôi nên không sao cả, ta tìm chỗ khác phù hợp hơn :).

  • @minhtrinh6658
    @minhtrinh6658 12 วันที่ผ่านมา

    check-in Giới thiệu các khái niệm trong Authentication và Authorization của anh Nam

  • @tienganhvalaptrinh
    @tienganhvalaptrinh 12 วันที่ผ่านมา

    Em đang nghiên cứu thêm về oidc, thì em có tìm hiểu về google account, em có thấy trong file discovery của google accounts.google.com/.well-known/openid-configuration việc authorization_endpoint và token_endpoint ở hai server khác nhau, em nghĩ có lẽ họ có hai service một phục vụ cho việc authen, một để cấp phát token, anh có thể làm video hướng dẫn về việc tách riêng 2 server dạng như vậy được không ạ? Em cảm ơn anh!!!

    • @hoc-lap-trinh
      @hoc-lap-trinh 11 วันที่ผ่านมา

      Tách ra thì viết hai cái riêng thôi mà, hoặc thậm chí là cùng 1 cái, nếu hai cái riêng thì chia sẻ backend DB với nhau là được.

    • @tienganhvalaptrinh
      @tienganhvalaptrinh 11 วันที่ผ่านมา

      @hoc-lap-trinh dạ, em cảm ơn anh ạ, em chúc anh thật nhiều sức khỏe ạ! Để tụi em còn có nhiều video asp .net để học và đặc biệt là mini webserver nữa ạ 🤩🤩🤩

  • @tienganhvalaptrinh
    @tienganhvalaptrinh 12 วันที่ผ่านมา

    Em cảm ơn anh vì bài giảng thật sự tâm huyết, những người làm nội dung mới thấy được để làm bài giảng cả tiếng đồng hồ mà đầy đủ kiến thức và sâu sắc như vậy thật không dễ dàng chút nào.

    • @hoc-lap-trinh
      @hoc-lap-trinh 12 วันที่ผ่านมา

      Hi hi cảm ơn em nhiều

  • @eptraihung7815
    @eptraihung7815 12 วันที่ผ่านมา

    Cảm ơn a

  • @boizhaydaulung
    @boizhaydaulung 12 วันที่ผ่านมา

    phần lý thuyết anh nói hay thật sự anh ạ. 100 điểm <3

  • @NhatNguyen-xv6qt
    @NhatNguyen-xv6qt 12 วันที่ผ่านมา

    quá đã luôn, 3 ngày ra 3 clip, cảm ơn anh

    • @hoc-lap-trinh
      @hoc-lap-trinh 12 วันที่ผ่านมา

      Hi hi đang kỳ nghỉ mà 😁

  • @eptraihung7815
    @eptraihung7815 13 วันที่ผ่านมา

    Cảm ơn a

    • @hoc-lap-trinh
      @hoc-lap-trinh 13 วันที่ผ่านมา

      ❤️❤️❤️

  • @minhtrinh6658
    @minhtrinh6658 13 วันที่ผ่านมา

    cám ơn thầy

    • @hoc-lap-trinh
      @hoc-lap-trinh 13 วันที่ผ่านมา

      Anh được rùi, gọi thầy ngại quá 😂

  • @trungdang801
    @trungdang801 13 วันที่ผ่านมา

    Đây rồi đợi mãi ❤

    • @hoc-lap-trinh
      @hoc-lap-trinh 13 วันที่ผ่านมา

      ❤️❤️🥰

  • @letanminhtoan2557
    @letanminhtoan2557 14 วันที่ผ่านมา

    siêu phẩm đây rùi <3

  • @minhhuyvo9380
    @minhhuyvo9380 16 วันที่ผ่านมา

    Bài giảng hay nha a :D

  • @nhattruong9604
    @nhattruong9604 17 วันที่ผ่านมา

    trong thực tế nên đặt tên policy thế nào để nó dễ hiểu và dễ maintain vậy a

    • @hoc-lap-trinh
      @hoc-lap-trinh 16 วันที่ผ่านมา

      Tên policy nên thể hiện mục đích, ví dụ như “management” hay “1year-membership”…

  • @nhattruong9604
    @nhattruong9604 18 วันที่ผ่านมา

    bài trước e ngẫm r vọc vạch 1,2 ngày mới vỡ ra qua bài này xem 1 lần là hiểu luôn 😅 đúng là cứ phải hiểu bản chất thì học mấy cái sau mới dễ dàng dc

    • @hoc-lap-trinh
      @hoc-lap-trinh 18 วันที่ผ่านมา

      Đúng rồi, một khi đã hiểu thì học sẽ thấy rất đơn giản.

  • @tainv204
    @tainv204 18 วันที่ผ่านมา

    E nghĩ các ví dụ OOP này nếu a dùng phần code của Java thì nó sẽ trực quan và dễ hiểu bơn ạ😁

    • @hoc-lap-trinh
      @hoc-lap-trinh 18 วันที่ผ่านมา

      Biết đâu phiên bản mới lại làm bằng Java thì sao? :D

  • @ntdungzero9332
    @ntdungzero9332 21 วันที่ผ่านมา

    cảm ơn ad , seri thật bổ ích ạ

    • @hoc-lap-trinh
      @hoc-lap-trinh 21 วันที่ผ่านมา

      cảm ơn bạn

  • @minhhuyvo9380
    @minhhuyvo9380 23 วันที่ผ่านมา

    đã hoàn thành 4/n 🙌

    • @hoc-lap-trinh
      @hoc-lap-trinh 23 วันที่ผ่านมา

      Cố lên được 1/10 khoá học rồi 😂

  • @tanphamminh164
    @tanphamminh164 23 วันที่ผ่านมา

    Net 8 và net 9 khác nhau k a Nam

    • @hoc-lap-trinh
      @hoc-lap-trinh 23 วันที่ผ่านมา

      Phần này thì y chang nhau thôi em ạ

  • @nhattruong9604
    @nhattruong9604 25 วันที่ผ่านมา

    39:55 dạ a cho e hỏi khi redirect đến User mà chưa login thì nó sẽ phải qua bước OpenIDConnect để xác thực rồi mới tới bước Authorization phải ko ạ

    • @hoc-lap-trinh
      @hoc-lap-trinh 24 วันที่ผ่านมา

      người dùng sẽ thực hiện xác thực trên trang Facebook, trang Duolingo sẽ không biết gì về việc này, nó chỉ cần quan tâm là có trả về cho nó code hay token hay không thôi

  • @breakerk.7253
    @breakerk.7253 25 วันที่ผ่านมา

    Hay quá , vô tình lướt trên face và mình đang học về c# luôn , mong có thể code được Backend sau series này

    • @hoc-lap-trinh
      @hoc-lap-trinh 25 วันที่ผ่านมา

      nếu nắm hết thì sẽ làm được thôi em

    • @hoc-lap-trinh
      @hoc-lap-trinh 25 วันที่ผ่านมา

      Nếu được thì em nên liếc qua khóa .NET cơ bản để xem có phần nào trong đó mình chưa nắm không, vì khóa này có nhiều kiến thức dựa trên khóa .NET cơ bản.

    • @breakerk.7253
      @breakerk.7253 24 วันที่ผ่านมา

      @@hoc-lap-trinh ok anh , cảm ơn a

  • @mjnhhhhh6525
    @mjnhhhhh6525 26 วันที่ผ่านมา

    Tiếp ra series này nhé thầy ơi!

  • @minhhuyvo9380
    @minhhuyvo9380 28 วันที่ผ่านมา

    video hay nha a ơi, thanks

  • @nguyennhat-sn5pe
    @nguyennhat-sn5pe 28 วันที่ผ่านมา

    hay quá anh ơi, trông từng ngày, hôm nay là ngày thứ 6 rồi😁🥰

    • @hoc-lap-trinh
      @hoc-lap-trinh 28 วันที่ผ่านมา

      😅 nay bận rùi, mai ra bài tiếp

  • @ShareVideo211
    @ShareVideo211 29 วันที่ผ่านมา

    quá thấm học xong hết kiến thức kiến thức gần bằng junior ấy chứ

    • @hoc-lap-trinh
      @hoc-lap-trinh 29 วันที่ผ่านมา

      Học hết thì quá luôn í chứ gần bằng gì :))

  • @biradon4444
    @biradon4444 29 วันที่ผ่านมา

    Hi anh Nam cho em hỏi cái nha 🙋‍♂ Với cấu trúc hiện tại thì mối liên hệ giữ Usecase - Entities và Cotroller - Model khá tương đồng nên em muốn hỏi xem ý nghĩa của việc phân chia dự án ạ 🤔 Cảm ơn anh Nam nhiều 🙌

    • @hoc-lap-trinh
      @hoc-lap-trinh 29 วันที่ผ่านมา

      Thực ra UseCase/Entity và Controller/Model không hoàn toàn giống nhau. UseCase/Entity chỉ đến các thành phần đứng từ góc độ business, tức Entity đại diện cho các thành phần xuất hiện trong bài toán em cần giải quyết, ví dụ như trong 1 app ngân hàng thì Entity có thể là Account, một usecase có thể là Withdraw hay Transfer, tức là một vấn đề mà bài toán của chúng ta giải quyết. Trong khi đó một model đại diện cho một "khối dữ liệu" mà chúng ta sẽ phải xử lý, đôi khi nó trùng với entity nhưng nhiều trường hợp không giống, ví dụ như khi em làm trang chuyển khoản thì model của em sẽ bao gồm 2 account number của người nhận và người gửi (một người có thể có nhiều account nên ta vẫn phải chỉ ra gửi từ account nào), model này chỉ để dùng phục vụ cho chức năng chuyển khoản chứ không đại diện cho một entity trong hệ thống. Tương tự khi chuyển khoản xong thì em có thể có model "TransferResult" để hiển thị trên result view, nhưng model này lại không tương ứng với bất kỳ entity nào cả.

    • @biradon4444
      @biradon4444 29 วันที่ผ่านมา

      @@hoc-lap-trinh Dạ cảm ơn anh Nam đã trả lời nha 👏 Cho em hỏi thêm một chút, là lúc em debug hàm Add() thì em thấy nó có chạy qua cả Entities và cả Model, vậy trong trường hợp mình liên kết với DB vào chương trình, thì mình sẽ gắn DB ở Model đúng không ạ. 🤔 Mình vẫn giữ Entities sẽ lớp nắm business rules chứ không tương tác với vòng layer ngoài cùng trong vòng trong clean architecture 🔍

    • @hoc-lap-trinh
      @hoc-lap-trinh 29 วันที่ผ่านมา

      @@biradon4444 DB sẽ không nằm trong Entities hay Models, mà nó sẽ nằm trong Infrastructure

  • @tienn-f3w
    @tienn-f3w หลายเดือนก่อน

    Không biết em có làm sai bước nào không mà xử lý cái jwt này mệt quá - Để khắc phục token bị hacker cướp => cho token thời gian ngắn - Token có thời gian ngắn => user phải đăng nhập lại nhiều => Thêm refresh token - Khắc phục refresh token bị cướp => Thêm blacklist cho refresh token để invalidate nó - Mỗi khi invalidate 1 refresh token thì phải invalidate access token nó sinh ra - Mỗi lần request phải vào db check token hợp lệ

    • @hoc-lap-trinh
      @hoc-lap-trinh หลายเดือนก่อน

      Em có dùng token rotation không? Sao phải xử lý tùm lum khổ vậy? A thấy rất nhiều người sử dụng black list các kiểu rồi nhưng a nghĩ nó vô dụng mà chỉ tốn thêm chi phí xử lý, bởi vẫn cần 1 khoảng thời gian để xác định token bị hack và đưa vào black list, liệu thời gian đó có nhanh hơn vòng đời của 1 access token? Và nếu implement để đưa refresh token vào black list thì sao không xóa nó luôn? Việc dùng black list sẽ phải trả giá bằng việc thêm một request đến black list đó trên mỗi lần xử lý.

    • @tienn-f3w
      @tienn-f3w หลายเดือนก่อน

      @@hoc-lap-trinh - Em có dùng token rotation, mà em sợ lúc trả token về bị hacker đọc được, nên lưu thêm black list nữa - Nếu xoá mỗi refresh token đi thì hacker vẫn truy cập được trong khoảng thời gian access token còn hạn, và tính năng force logout nữa, nên em nghĩ phải blacklist cả refresh token và access token được sinh ra cùng với nó nữa - Với lại nếu dùng token rotation thì dùng đa thiết bị kiểu gì vậy ạ. Em random 1 chuỗi base64, lưu vào trình duyệt để xác định, nhưng bị sai ở chỗ người dùng sử dụng trình duyệt khác cũng bị thông báo "Tài khoản được đăng nhập ở thiết bị khác"

    • @tienn-f3w
      @tienn-f3w หลายเดือนก่อน

      ​@@hoc-lap-trinh Em có dùng kỹ thuật rotation ạ - Nhưng khi muốn bắt buộc người dùng logout ngay lập tức thì em phải tạo blacklist cho RefreshToken và AccessToken được tạo bởi RT đấy. Thành ra query nào cũng phải check db - Em check token có bị đánh cắp không bằng cách: gửi AT và RT lên, nếu chữ ký AT đúng, nhưng RT khác với RT mới nhất thì bị cho là đánh cắp => nhưng làm thế này em lại không biết cách làm đa thiết bị

  • @TuHai
    @TuHai หลายเดือนก่อน

    video thiết thực nhất từng xem trên ytb