在 MVC4 应用程序中,在控制器逻辑中,我想检查用户是否已登录。
我应该使用:
User.Identity.IsAuthenticated
或者:
WebSecurity.IsAuthenticated
据我所知WebSecurity
只是一个包装。我应该使用它还是User.Identity
具有不同的功能?
在 MVC4 应用程序中,在控制器逻辑中,我想检查用户是否已登录。
我应该使用:
User.Identity.IsAuthenticated
或者:
WebSecurity.IsAuthenticated
据我所知WebSecurity
只是一个包装。我应该使用它还是User.Identity
具有不同的功能?
据我所知,WebSecurity 只是一个包装器。
没错,两者都是一样的。让我们看看WebSecurity.IsAuthenticated
属性是如何实现的:
public static bool IsAuthenticated
{
get
{
return Request.IsAuthenticated;
}
}
现在让我们看看WebSecurity.Request
静态属性是如何实现的:
internal static HttpRequestBase Request
{
get
{
return Context.Request;
}
}
最后让我们看看WebSecurity.Context
静态属性是如何实现的:
internal static HttpContextBase Context
{
get
{
return new HttpContextWrapper(HttpContext.Current);
}
}
如您所见:
WebSecurity.IsAuthenticated
是相同的:
new HttpContextWrapper(HttpContext.Current).Request.IsAuthenticated
反过来,这Context.User.Identity.IsAuthenticated
与存在 null 检查的细微差别相同,并且如果例如Identity
属性为 null,则该属性将返回 false。
我应该使用它还是 User.Identity 具有不同的功能?
即使两者严格等价,我也会使用User.Identity
官方的 ASP.NET 实现,因为如果明天您决定用其他东西替换简单的成员资格提供程序,那么您的代码中要替换的东西就会少得多。