Theo tôi biết WebSecurity chỉ là trình bao bọc.
Đúng vậy, cả hai đều giống nhau. Chúng ta hãy có một cái nhìn tại như thế nào WebSecurity.IsAuthenticated
tài sản được thực hiện:
public static bool IsAuthenticated
{
get
{
return Request.IsAuthenticated;
}
}
và bây giờ chúng ta hãy nhìn vào cách các WebSecurity.Request
thuộc tính tĩnh được thực hiện:
internal static HttpRequestBase Request
{
get
{
return Context.Request;
}
}
và cuối cùng chúng ta hãy có một cái nhìn tại như thế nào WebSecurity.Context
thuộc tính tĩnh được thực hiện:
internal static HttpContextBase Context
{
get
{
return new HttpContextWrapper(HttpContext.Current);
}
}
vì vậy, như bạn có thể thấy:
WebSecurity.IsAuthenticated
là giống như:
new HttpContextWrapper(HttpContext.Current).Request.IsAuthenticated
do đó cũng giống như Context.User.Identity.IsAuthenticated
với một khác biệt nhỏ mà có kiểm tra vô bất động sản sẽ trở lại false nếu ví dụ như Identity
tài sản là null.
Tôi có nên sử dụng nó hoặc User.Identity có chức năng khác không?
Thậm chí nếu hai là phương pháp giống hệt tôi sẽ sử dụng User.Identity
đó là ASP.NET thực hiện chính thức vì nếu ngày mai bạn quyết định thay thế các nhà cung cấp thành viên đơn giản với một cái gì đó khác mà bạn sẽ có những thứ xa ít hơn để thay thế trong bạn mã.
Nguồn
2013-04-06 16:30:37
Vì vậy, sau lời khuyên của bạn, để có được UserId, tôi sẽ không sử dụng WebSecurity.CurrentUserId, và thay vào đó sử dụng Membership.GetUser(). ProviderUserKey? –
Có, cả hai cũng giống nhau. Bạn có thể sử dụng cái bạn thích với cùng một kết quả. –