none
Autenticação de Usuário sem utilizar os controles de login da toolbox RRS feed

  • Pergunta

  • Pessoal estou implementando um controle de acesso(roles) sem utilizar os controles de login da toolbox, em função que preciso utilizar o id da tabela de usuário para inserir em outras tabelas do banco quando necessário.

    Quando o usuário do sistema digita o login e senha dele, até ai esta tudo bem, esta indo no banco verificar o usuário e senha, porém essa select retorna as roles do usuário que pode ter mais de um por exemplo, ai esta a questão preciso colocar esta roles dentro de um array de string.

    segue o código:

    public Usuario Autenticar(Conexao conexao, string email, string password)
        {
            var cmd = conexao.CriarComando("select      Users.Name, Users.Email, Roles.RoleName from UserRoles "+
                                           " inner join Users on Users.UserID = UserRoles.UserID "+
                                           " inner join Roles on Roles.RoleID = UserRoles.RoleID "+
                                           " where Users.Email = @Email and Users.Password = @Password",CommandType.Text);
            cmd.Parameters.AddWithValue("@Email", email);
            cmd.Parameters.AddWithValue("@Password", password);
    
            var result = cmd.ExecuteReader();
    
            if (result != null)
            { 
                Usuario usuario = new Usuario();
    
                if(result.Read())
                {     
                    usuario.Name = (string)result["Name"];
                    usuario.Email = (string)result["Email"];
    
    //QUARDAR AS ROLES EM UM ARRAY DE STRING
    
               }
                return usuario;
            }
            else
            {
                return null;                
            }
        }

    Se alguém poder me ajudar ou tenha alguma outra ideia....


    Marcos Ruiz

    domingo, 26 de fevereiro de 2012 21:05

Todas as Respostas

  • seria algo mais ou menos assim, se entendi bem:

    public Usuario Autenticar(Conexao conexao, string email, string password)
        {
            var cmd = conexao.CriarComando("select      Users.Name, Users.Email, Roles.RoleName from UserRoles "+
                                           " inner join Users on Users.UserID = UserRoles.UserID "+
                                           " inner join Roles on Roles.RoleID = UserRoles.RoleID "+
                                           " where Users.Email = @Email and Users.Password = @Password",CommandType.Text);
            cmd.Parameters.AddWithValue("@Email", email);
            cmd.Parameters.AddWithValue("@Password", password);
    
            var result = cmd.ExecuteReader();
            Usuario usuario = new Usuario();
            List<string>Roles = new List<string>();
            while(result.Read())
            { 
              usuario.Name = (string)result["Name"];
              usuario.Email = (string)result["Email"];
    
               Roles.Add(result["RoleName"].ToString());
    
             }
                return usuario;
            }
        }
    return null;


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Se for útil marque como resposta e faça um Developer feliz :)

    segunda-feira, 27 de fevereiro de 2012 11:28
    Moderador
  • Olavo,

    Obrigado pela ajuda, mas preciso guardar as roles dentro de um array de string do objeto usuario.

        public string[] Perfil { get; set; }

    Como posso fazer isso?


    Marcos Ruiz

    sexta-feira, 9 de março de 2012 03:03