User.Identity.IsAuthenticated VS WebSecurity.IsAut

2019-08-20 01:22发布

在一个MVC4应用程序,在控制器逻辑我想检查用户是否登录。
我应该使用:

User.Identity.IsAuthenticated

要么:

WebSecurity.IsAuthenticated

据我所知WebSecurity是只是一个包装。 我应该使用它或User.Identity具有不同的功能?

Answer 1:

据我所知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实现,因为如果明天您决定更换与一些简单的成员资格提供否则你会少得多的东西在你的代码替换。



文章来源: User.Identity.IsAuthenticated vs WebSecurity.IsAuthenticated