Authentification par formulaire: affiche les informations sur l'utilisateur actuellement connecté dans FormView à l'aide de la source de données d'objet.

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

Question

Dans mon application Web, j'utilise l'authentification par formulaires avec un cookie. Dans une page, je souhaite afficher les informations relatives à l'utilisateur actuellement connecté, dans un FormView alimenté par un ObjectDataSource. Ma source de données a une méthode de sélection acceptant en paramètre le nom d'utilisateur sous lequel les données de l'utilisateur seront demandées à la base de données. Comment puis-je obtenir le nom d'utilisateur de l'utilisateur actuellement connecté et l'utiliser comme paramètre de sélection pour la source de données.

Était-ce utile?

La solution 2

Au lieu de cela, j'ai choisi d'utiliser l'événement de sélection de la source de données et d'ajouter les informations dont j'avais besoin en tant que inputParameter.

Autres conseils

Sur Global.asax .. vous devriez écrire:

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

La méthode SecurityManager.SetPrincipal () doit ressembler à:

// 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;

Autant que je sache, ObjectDataSource vous permet d'écrire une classe de couche d'accès aux données et de mapper certaines méthodes de cette classe aux opérations DataSource. Vous pouvez accéder à HttpContext.Current.User à partir de ces méthodes.

Comme vous l'avez dit, "Dans mon application Web, j'utilise l'authentification par formulaires avec un cookie". Je suppose que vous savez comment vous "connecter". l'utilisateur et envoyez le cookie au navigateur. Si vous avez des problèmes avec cela, faites le moi savoir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top