2014-12-08 25 views
6

Tôi đang làm việc trên hệ thống xác thực sử dụng ASP.NET Identity with Entity Framework và tôi muốn có một số xác nhận quyền sở hữu được tính toán thay vì được mã hóa cứng vào bảng xác nhận quyền sở hữu .Xác nhận quyền sở hữu người dùng trong ASP.NET Identity EF

Khi người dùng đăng nhập, làm cách nào để thêm xác nhận quyền sở hữu động vào phiên đăng nhập đó mà không thực sự thêm họ vào bảng xác nhận quyền sở hữu?

Ví dụ: tôi có thể lưu trữ DOB của từng người dùng nhưng tôi muốn thêm IsBirthday làm xác nhận quyền sở hữu nếu ngày đăng nhập khớp với DOB của người dùng. Tôi không muốn lưu trữ yêu cầu "IsBirthday" cho mỗi người dùng vì nó thay đổi hàng ngày cho mọi người.

Trong mã của tôi, tôi sử dụng để đăng nhập:

var signInResult = await SignInManager.PasswordSignInAsync(username, password, false, false); 

Sau này được gọi là tôi có thể tham khảo các ClaimsPrincipal, nhưng tài sản bố là một IEnumerable, không một danh sách, vì vậy tôi không thể thêm cho nó.

EDIT: Tôi cũng nên đề cập đến tôi đang sử dụng thư viện Microsoft.AspNet.Identity.Owin.

+0

mỗi phản ứng Chris Pratt, dưới thiết lập này tôi sẽ lưu trữ DOB như một thuộc tính trên mô hình. – zaparker

Trả lời

11

OK, tất cả mọi người, tôi đã làm một chút đào sâu vào các lớp học được cung cấp trong ASP.NET Identity và tìm thấy thứ tôi cần ghi đè. Lớp SignInManager có một phương thức CreateUserIdentityAsync thực hiện chính xác những gì tôi muốn. Đoạn mã sau đã thêm xác nhận IsBirthday vào danh tính của tôi nhưng không lưu trữ nó trong cơ sở dữ liệu.

public class ApplicationSignInManager : SignInManager<ApplicationUser, string> 
{ 
    public override async Task<System.Security.Claims.ClaimsIdentity> CreateUserIdentityAsync(ApplicationUser user) 
    { 
     var identity = await base.CreateUserIdentityAsync(user); 
     identity.AddClaim(new System.Security.Claims.Claim("IsBirthday", user.DOB.GetShortDateString() == DateTime.Now.GetShortDateString())); 
     return identity; 
    } 

    // ... EXCLUDING OTHER STUFF LIKE CONSTRUCTOR AND OWIN FACTORY METHODS ... 
} 
Các vấn đề liên quan