Soweit ich weiß WebSecurity ist nur ein Wrapper.
Das stimmt, beide sind gleich. Werfen wir einen Blick darauf, wie die WebSecurity.IsAuthenticated
Eigenschaft implementiert:
public static bool IsAuthenticated
{
get
{
return Request.IsAuthenticated;
}
}
und die jetzt schauen lassen, wie das die WebSecurity.Request
statische Eigenschaft implementiert:
internal static HttpRequestBase Request
{
get
{
return Context.Request;
}
}
und die schließlich einen Blick lassen haben, wie die WebSecurity.Context
internal static HttpContextBase Context
{
get
{
return new HttpContextWrapper(HttpContext.Current);
}
}
so wie Sie sehen können: statische Eigenschaft implementiert
WebSecurity.IsAuthenticated
ist die gleiche wie:
new HttpContextWrapper(HttpContext.Current).Request.IsAuthenticated
wiederum die die gleichen wie Context.User.Identity.IsAuthenticated
mit einem kleinen Unterschied ist, dass es null Kontrollen sind und die Eigenschaft wird falsch zurück, wenn zum Beispiel der Identity
Eigenschaft null ist.
Sollte ich es verwenden oder Benutzer.Identity hat unterschiedliche Funktionalität?
Auch wenn die beiden sind absolut gleichwertig würde ich die User.Identity
verwenden, die die offizielle ASP.NET-Implementierung ist, denn wenn morgen entscheiden, die einfache Mitgliedschaft Anbieter mit etwas zu ersetzen, sonst werden Sie weit weniger Dinge in ersetzen Ihre Code.
Folgen Sie Ihrem Rat, um die UserId zu erhalten, werde ich nicht WebSecurity.CurrentUserId verwenden, und stattdessen Membership.GetUser(). ProviderUserKey? –
Ja, die beiden sind auch gleich. Sie können das, das Sie bevorzugen, mit demselben Ergebnis verwenden. –