9

MVC4 アプリのコントローラー ロジックで、ユーザーがログインしているかどうかを確認したい。
次を使用する必要 があります。

User.Identity.IsAuthenticated

または:

WebSecurity.IsAuthenticated

私の知る限り、WebSecurity単なるラッパーです。私はそれを使用する必要がありますか、それともUser.Identity別の機能を持っていますか?

4

1 に答える 1

7

私の知る限り、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 チェックがあり、たとえばプロパティが null の場合にプロパティが false を返すというわずかな違いを除いて同じIdentityです。

私はそれを使用する必要がありますか、それとも User.Identity には別の機能がありますか?

2 つが厳密に同等でUser.Identityあっても、公式の ASP.NET 実装である を使用します。単純なメンバーシップ プロバイダーを別のものに置き換えることにした場合、コード内で置き換えるものがはるかに少なくなるからです。

于 2013-04-06T16:30:37.050 に答える