Điều này nên được đơn giản, nhưng tôi chỉ đơn giản là không thể tìm ra sau khi tất cả googling của tôi. Đây là những gì tôi muốn. Tôi có một bảng người dùng tùy chỉnh (không có vai trò tại thời điểm này) mà tôi muốn cho phép chống lại. Đối với điều này tôi sẽ phải thực hiện một nhà cung cấp thành viên tùy chỉnh mà tôi đã làm. Câu hỏi của tôi là mặc dù, làm thế nào để tôi đi về thiết lập một IPrincipal tùy chỉnh cho HttpContext.Current.User? Điều đó sẽ xảy ra ở đâu? Hãy nói rằng tôi có các thiết lập sau:Tùy chỉnh IPrincipal với các hình thức xác thực trong ASP.NET MVC
public class CustomMembershipProvider : MembershipProvider
{
private IUserRepository _repository;
public CustomMembershipProvider(IUserRepository repository)
{
_repository = repository;
}
public override bool ValidateUser(string username, string password)
{
//check user repository
}
//additional methods omitted for brevity
}
sau đó tôi có một lớp người dùng tùy chỉnh các dụng cụ IPrincipal
và IIdentity
public class CustomUser : IPrincipal
{
public CustomUser(string name, int userId, string additionalInfo)
{
Identity = new CustomIdentity(name, userId, additionalInfo);
}
public IIdentity Identity { get; private set; }
public bool IsInRole(string role)
{
return true;
}
}
public class CustomIdentity : IIdentity
{
public CustomIdentity(string name, int userId, string additionalInfo)
{
Name = name;
UserId = userId;
AdditionalInfo = additionalInfo;
}
public string Name { get; private set; }
public string AuthenticationType
{
get { return "CustomAuth"; }
}
public bool IsAuthenticated
{
get { return !String.IsNullOrEmpty(Name); }
}
public int UserId { get; private set; }
public string AdditionalInfo { get; private set; }
}
Vì vậy, câu hỏi của tôi là, đâu là địa điểm chính xác để thiết lập Context.User cho một phiên bản của người dùng tùy chỉnh này? Tôi có cần Thuộc tính ủy quyền tùy chỉnh không? Nếu vậy, nó sẽ như thế nào?
Làm thế nào bạn tiếp tục với điều này cuối cùng? Tôi đang trong những ngày đầu làm một cái gì đó tương tự như bản thân mình. – ETFairfax
Tôi đang trên cùng một chiếc thuyền, tôi gần như đã sẵn sàng để tạo ra một phương pháp mở rộng để thực hiện công việc! –