Cá nhân tôi đã sử dụng cùng một ví dụ cho việc triển khai Asp.net Identity của mình trên Mongodb và lý do bạn thiếu lớp đó là vì mẫu này khá cũ và phần mở rộng Identity cho mongodb mà nó phụ thuộc là tại đây và nó đã chuyển sang các phiên bản cập nhật rồi.
Tôi không thể xem mô tả đầy đủ ở đây về cách tôi sử dụng nó nhưng tôi chắc chắn có thể chỉ bạn đến dự án nguồn mở của tôi tại đây nơi tôi đã học, hãy tạo thành ví dụ mà bạn đã đề cập. Tôi hy vọng nó sẽ giải quyết được vấn đề của bạn khi triển khai Asp.net Identity với Mongodb.
Cập nhật
-
Nếu bạn muốn có cùng một giải pháp mà Attila Hajdrik đã viết trong git repo, vui lòng đảm bảo rằng bạn có chính xác phiên bản gói giống như AspNet.Identity.MongoDB đã định nghĩa tại đây . Bởi vì bản thân thư viện hiện đã được nâng cấp và tôi cho rằng bạn có thể cập nhật tất cả các gói nuget hoặc tạo lại toàn bộ giải pháp được viết trong github repo theo nhu cầu của bạn. Trong cả hai trường hợp, bạn có thể kết thúc với một phiên bản AspNet.Identity.MongoDB mà bạn không muốn sử dụng. Đây là giải pháp ngắn nhất và dễ dàng nhất cho nhu cầu của bạn.
-
Bây giờ về giải pháp của tôi được đề cập ở trên từ repo github của tôi. Tôi đã sử dụng
IAccountContext
của riêng mình và tôi đã sử dụngUserManager<User>
là AccountManager cơ sở của tôi vàUserStore<User>
là cửa hàng cơ bản của tôi cho người quản lý. ĐâyUser
lớp là lớp Identity mà tôi đang sử dụng có nguồn gốc từIdentityUser
.
Về mặt kỹ thuật, bạn có thể xây dựng bối cảnh của riêng mình một cách dễ dàng và bạn không nhất thiết phải dựa vào ví dụ đã cho một cách đầy đủ.
AccountContext mẫu của tôi sẽ là:
public class AccountContext : IAccountContext
{
private readonly IDbContext dbContext;
private readonly AccountManager accountManager;
public AccountContext(
IDbContext dbContext,
AccountManager accoutnManager)
{
this.dbContext = dbContext;
this.accountManager = accoutnManager;
}
// Your own stuff here
}
Tại đây, AccountManager
là một UserManager<T>
dẫn xuất và nó nhận IUserStore<User>
trong phương thức khởi tạo của nó. Thực tế, nó cung cấp cho bạn nhiều tự do hơn về cách bạn muốn thiết kế lớp Identity của mình. :)
Hi vọng điêu nay co ich.