Formas de autenticação - Exibição conectado no momento informações do usuário em FormView usando o objeto de fonte de dados

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

Pergunta

Na minha aplicação web que usar autenticação de formulários com um cookie. Em uma página que deseja exibir as informações para o usuário conectado no momento, dentro de um FormView alimentado por um ObjectDataSource. Minha fonte de dados tem um método de seleção aceitar como parâmetro o nome de usuário pelo qual os dados do usuário serão solicitados a partir do banco de dados. Como faço para obter o nome de usuário para o usuário conectado no momento e usá-lo como um parâmetro de seleção para a fonte de dados.

Foi útil?

Solução 2

Em vez disso, eu escolhi usar o evento Seleção da fonte de dados e adicionar as informações que eu precisava como um inputParameter.

Outras dicas

Em Global.asax .. você deve escrever:

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

O SecurityManager.SetPrincipal () método deve ser parecido:

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

Tanto quanto eu sei, ObjectDataSource permite que você escreva uma classe de camada de acesso a dados e mapear alguns métodos desta classe para as operações DataSource. Você pode acessar HttpContext.Current.User de dentro métodos teses.

Como você disse que são "Na minha aplicação web que usar autenticação de formulários com um cookie". Estou assumindo que você sabe como "log" o usuário e envia o cookie para o navegador. Se você tiver qualquer problema com isso, deixe-me saber.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top