MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm thế nào để triển khai ASP.NET Core 3.1 Identity với MongoDB?

Sử dụng các gói Mongo Identity NuGet có sẵn để thay thế cho ASP.NET Core Identity mặc định. Một số gói vẫn đang được bảo trì là AspNetCore.Identity.Mongo AspNetCore.Identity.MongoDbCore .

  1. Cài đặt gói mới nhất trong NuGet (xem ở trên).

  2. Nhấp chuột phải vào dự án của bạn trong bảng điều khiển "Giải pháp Explorer"> Thêm> Mục mới được xếp lại ...

    Chọn "Danh tính" trên bảng điều khiển bên trái và nhấp đúp vào Danh tính trong bảng lựa chọn chính

  3. Trong cửa sổ "Thêm danh tính", chọn tất cả hoặc trang bạn muốn sử dụng.

    Nhấp vào nút "+" bên cạnh đầu vào lớp ngữ cảnh Dữ liệu, thêm một cái mới (tên không quan trọng vì bạn có thể xóa nó sau đó) và thực hiện tương tự đối với lớp Người dùng (đặt tên tốt, chẳng hạn như ApplicationUser, đây sẽ là một cái mà bạn sẽ sử dụng trong quá trình phát triển sau này, việc thay đổi sẽ mất một thời gian và rất nhiều rắc rối)

    đối với lớp Người dùng, bạn có thể đổi tên nó thành Không gian tên, chẳng hạn như "[Dự án của bạn] .Areas.Identity.Datas.ApplicationUser", điều này sẽ được phản ánh trên mã giàn giáo.

3.1. Nếu được yêu cầu, bạn có thể thêm lớp Vai trò, tốt hơn là tạo trên không gian tên giống như lớp Người dùng để phân loại mã của bạn.

  1. Mở tệp "IdentityHostingStartup.cs" trong [Dự án của bạn] / Khu vực / Danh tính, thay thế mã bằng hướng dẫn từ GitHub, thông tin cài đặt bổ sung có thể là tìm thấy tại đây
// Add Identity for AspNetCore.Identity.Mongo, ApplicationRole is optional
services.AddIdentityMongoDbProvider<ApplicationUser, ApplicationRole>(identityOptions =>
{
    // Password settings.
    identityOptions.Password.RequiredLength = 6;
    identityOptions.Password.RequireLowercase = true;
    identityOptions.Password.RequireUppercase = true;
    identityOptions.Password.RequireNonAlphanumeric = false;
    identityOptions.Password.RequireDigit = true;

    // Lockout settings.
    identityOptions.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
    identityOptions.Lockout.MaxFailedAccessAttempts = 5;
    identityOptions.Lockout.AllowedForNewUsers = true;

    // User settings.
    identityOptions.User.AllowedUserNameCharacters =
      "ab[email protected]+";
    identityOptions.User.RequireUniqueEmail = true;
}, mongoIdentityOptions => {
    mongoIdentityOptions.ConnectionString = "mongodb://localhost:27017/MyDB";
    // mongoIdentityOptions.UsersCollection = "Custom User Collection Name, Default User";
    // mongoIdentityOptions.RolesCollection = "Custom Role Collection Name, Default Role";
}).AddDefaultUI(); //.AddDefaultUI() to temporary remove error when no EmailSender provided, see https://stackoverflow.com/questions/52089864/

// This is required to ensure server can identify user after login
services.ConfigureApplicationCookie(options =>
{
    // Cookie settings
    options.Cookie.HttpOnly = true;
    options.ExpireTimeSpan = TimeSpan.FromMinutes(5);

    options.LoginPath = "/Identity/Account/Login";
    options.AccessDeniedPath = "/Identity/Account/AccessDenied";
    options.SlidingExpiration = true;
});
  1. Đăng ký dịch vụ Xác thực tại Configure() trong Startup.cs thư mục
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // code here...
    app.UseHttpsRedirection();
    app.UseStaticFiles();

    app.UseRouting();

    // add app.UseAuthentication(); to register authentication service, without it, user could technically login but has no logged in session created.
    app.UseAuthentication();
    app.UseAuthorization();
    // more code
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Quản lý người dùng cơ sở dữ liệu với ClusterControl

  2. Mongo DB:Không thể tạo một cụm sharding trong Ubuntu

  3. hỗ trợ giao dịch mongodb 4.0 cho node.js

  4. Chuyển đổi thuộc tính chuỗi MongoDB hiện có thành BSON ::ObjectId

  5. nhóm mongodb chậm ngay cả sau khi thêm chỉ mục