Im Denken des Erhaltens Benutzername von meiner Seite mit dieser meiner Meinung nach (Razor-Syntax) gesetzt ist:bekommen Benutzername, die in Userdata von FormsAuthenticationTicket
@MySite.Helpers.Utils.UserName
here die utils Klasse:
public class Utils
{
static FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
public static string UserName { get { return id.Ticket.UserData; } }
}
Sind Gibt es irgendwelche Probleme mit diesem Code?
Der Grund Im es, wie dies zu tun ist, weil Im Benutzernamen in das Feld Userdata eines neuen FormsAuthenticationTicket, wenn sich der Benutzer anmeldet.
ich es so speichern gehe Handhabung, weil Im mit Facebook verbinden und wollen Speichern Sie dort ID in das Feld Benutzername in der Datenbank und ihre Benutzernamen/fullnames in einer separaten Tabelle.
so meine Logik, facebook Benutzernamen und meine Website-registrierte Benutzernamen zu handhaben muss anders behandelt werden. Beim Anmelden denke ich daran, es dort zu behandeln, und setze dann userdata als den tatsächlichen Benutzernamen.
daher in der gesamten Website kann ich nur die eingeloggte Benutzer erhalten Name: @MySite.Helpers.Utils.UserName
klingt das ok? Wird die Tatsache, dass es sich um eine statische Variable handelt, ein Problem sein?
oder gibt es eine bessere Möglichkeit, dies zu verwalten? Sitzungsvariablen vielleicht?
dank
Ich bin mir ziemlich sicher, dass 'id' als statische Variablen gespeichert werden Sie Probleme verursachen . Machen Sie es stattdessen zu einer Eigenschaft. –
@jbinto, das ist eine ungenaue Anweisung, da der Op den Wert von id über das HttpContext.Current-Objekt an die kontextabhängige Instanz zur Laufzeit gebunden hat. Mit der Art und Weise, wie @raKlos dies codiert hat, können Sie während der Laufzeit auf die ID nur für die aktuelle Anfrage zugreifen, wenn Sie sich in einem Zustand befinden, in dem Sie keinen Zugriff auf HttpContext.Current haben. –