2012-04-05 11 views
4

Ich versuche, meine eigene FormsAuthentication in einer ASP.NET MVC 4-Anwendung zu machen, und ich habe zwei verschiedene Möglichkeiten zur Erstellung meiner Authcookie gesehen und ich fragte mich, ob einer von ihnen irgendwelche Nachteile hat oder ob es sicher ist, sie beide zu verwenden Gibt es irgendwelche anderen Unterschiede, über die ich Bescheid wissen sollte, bevor ich mich entscheide, sie zu benutzen?Welche FormsAuthentication-Methode zu verwenden?

die erste ist

FormsAuthentication.SetAuthCookie(userName, rememberMe); 

der andere ein bisschen länger

ist mir über diese Entscheidung
  var authTicket = new FormsAuthenticationTicket(
      1, 
      userName, 
      DateTime.Now, 
      DateTime.Now.AddMinutes(30), 
      rememberMe, 
      "Users" 
      ); 
     var encryptedTicket = FormsAuthentication.Encrypt(authTicket); 

     var authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); 
     HttpContext.Current.Response.Cookies.Add(authCookie); 

bitte aufklären

Antwort

3

Tatsächlich ruft die erste Methode die zweite Methode auf. Ich habe die Quelle der SetAuthCookie genommen, um dies zu zeigen, aber einige Zeilen entfernt, um es relevant zu halten:

public static void SetAuthCookie(string userName, bool createPersistentCookie) 
{ 
    FormsAuthentication.Initialize(); 
    FormsAuthentication.SetAuthCookie(userName, createPersistentCookie, FormsAuthentication.FormsCookiePath); 
} 

public static void SetAuthCookie(string userName, bool createPersistentCookie, string strCookiePath) 
{ 
    (...) 
    HttpCookie authCookie = FormsAuthentication.GetAuthCookie(userName, createPersistentCookie, flag ? "/" : strCookiePath, !flag); 
    (...) 
    HttpContext.Current.Response.Cookies.Add(authCookie); 
    (...) 
} 

private static HttpCookie GetAuthCookie(string userName, bool createPersistentCookie, string strCookiePath, bool hexEncodedTicket) 
{ 
    (...) 
    DateTime utcNow = DateTime.UtcNow; 
    DateTime expirationUtc = utcNow.AddMinutes((double) FormsAuthentication._Timeout); 
    FormsAuthenticationTicket ticket = FormsAuthenticationTicket.FromUtc(2, userName, utcNow, expirationUtc, createPersistentCookie, string.Empty, strCookiePath); 
    string str = FormsAuthentication.Encrypt(ticket, hexEncodedTicket); 
    (...) 
    HttpCookie httpCookie = new HttpCookie(FormsAuthentication.FormsCookieName, str); 
    (...) 
    return httpCookie; 
} 
+0

danke für Ihre Antwort. Jetzt weiß ich ein bisschen mehr über diese beiden Methoden = D – mattematico

+0

was ist, wenn ich nicht die 1. Methode "FormsAuthentication.SetAuthCookie (userName, rememberMe)" verwenden. Wie wird es die 2. Methode (httpCookie) nennen? – JerryGoyal

1

zweite beste ist .. da u Benutzer senden Daten, Verfallszeit etc ..

Ich benutze auch dies nur ... es funktioniert gut ..

Verwandte Themen