在一个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检查,如果例如该属性将返回false Identity
属性为null。
我应该使用它或User.Identity具有不同的功能?
即使两者完全等同我会用User.Identity
这是官方的ASP.NET实现,因为如果明天您决定更换与一些简单的成员资格提供否则你会少得多的东西在你的代码替换。