Formularauthentifizierung - Anzeige zur Zeit in Benutzerinformationen in Formview angemeldet Quelle mit Objektdaten

StackOverflow https://stackoverflow.com/questions/1619938

Frage

In meiner Web-Anwendung verwende ich die Formularauthentifizierung mit einem Cookie. In einer Seite möchte ich für den aktuell angemeldeten Benutzer die Informationen angezeigt werden, in einem Formview mit einem Object angetrieben. Meine Datenquelle verfügt über eine select-Methode als Parameter akzeptieren, die Benutzername, mit dem die Benutzerdaten aus der Datenbank angefordert werden. Wie erhalte ich die Benutzername für die aktuell angemeldeten Benutzer und als Auswahlparameter für die Datenquelle verwenden.

War es hilfreich?

Lösung 2

Stattdessen habe ich gewählt, um die Auswahl von Ereignisse der Datenquelle zu verwenden, und fügen Sie die Informationen, die ich als Inputparameter benötigt werden.

Andere Tipps

Auf Global.asax .. Sie sollten schreiben:

protected void Application_AuthenticateRequest(object sender, EventArgs e) {
    if (Request.PhysicalPath.EndsWith(".aspx") || Request.PhysicalPath.EndsWith(".axd"))
        SecurityManager.SetPrincipal();
}

Die SecurityManager.SetPrincipal () Methode sollte wie folgt aussehen:

// variable we'll use to set HttpContext.Current.User
        IPrincipal principal = null;
        FormsIdentity identity;

        //IsAuthenticated will be automatically set by .NET framework
        if (HttpContext.Current.Request.IsAuthenticated)
        {
            // (FormsIdentity)HttpContext.Current.User.Identity will
            // be filled automatically by the .NET framework when using forms authentication
            identity = (FormsIdentity)HttpContext.Current.User.Identity;

            // This User class must be defined BY YOU
            User userProfile;
            // this user data is the data that you entered when you created the ticket.
            // this should be a security token that would allow you to GET THE USER FROM IT
            String userData = (((FormsIdentity)identity).Ticket).UserData;
            try
            {
                // UserHelper is a class that must be able to OBTAIN a USER given a SECURITY TOKEN.
                // remember, you created this token when you created the ticket you used in the cookie.
                userProfile = UserHelper.GetUser(userData);

                // AuthenticatedPrincipal must implement IPrincipal. Consider deriving from GenericPrincipal.
                // Your IPrincipal implementations must hold a reference to the UserClass you created
                principal = new AuthenticatedPrincipal(identity, userProfile);
            }
            catch
            {
                FormsAuthentication.SignOut();
                // This is analogous to AuthenticatedPrincipal
                principal = new AnonymousPrincipal(new GuestIdentity(), UserHelper.GetUser(null));
            }

        }
        else
        {
            principal = new AnonymousPrincipal(new GuestIdentity(), UserHelper.GetUser(null));
        }

        // Now we make our principal, that holds a reference to the currently
        // logged user, globally visible
        HttpContext.Current.User = principal;

Soweit ich weiß, Object können Sie eine Data Access Layer-Klasse schreiben und einige Methoden dieser Klasse auf die Datasource-Vorgänge. Sie können HttpContext.Current.User von innerhalb Thesen Methoden.

Wie Sie sagen, Sie sind „In meiner Web-Anwendung verwende ich die Formularauthentifizierung mit einem Cookie“. Ich nehme an, Sie wissen, wie der Benutzer „log“ und das Cookie an den Browser senden. Wenn Sie Probleme damit haben, lassen Sie es mich wissen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top