none
Criar um sistema de login em 3 camadas RRS feed

  • Pergunta

  • Pessoal estou na duvida de como proceder para criar um sistema de login em 3 camadas, veja o meu ambiente e o que ja fiz.

    Estou programando em asp net (vb net) acessando banco de dados sql server 2008 express.

    Criei um solution chamada webMire e dentro desse projeto criei 2 class library chamada mireDAL e mireBLL, ate aqui tudo bem certo.

    No meu projeto de apresentação criei uma pagina login.aspx, nessa tela eu coloquei 2 caixas de texto e um button para validar o usuario e senha.

    Na camada mireDAL eu criei uma uma classe chamada gerenciaDB.vb e aqui eu pego a connextionstring do web.config que está criptografada e abro o banco de dados

    nessa camada ainda eu criei uma pasta chamada login e la dentro eu criei uma outra classe chamada loginDAL.vb , aqui dentro eu coloquei o select que verifica se o usuario e a senha estao correto, acessando o banco de dados, essa classe vai me retorna 0 caso o usuario nao exista e o numero do id caso o usuario e senha estejam corretos.

    Na camada de negocio mireBLL eu criei uma classe chamada AutenticaUsuarioBLL.vb

    Na camada de negocios que estou com duvida, essa camada eu uso para validar tudo o que o usuario digitar, exemplo o usuario nao pode conter numeros, estou certo?

    Caso o usuario nao tenha digitado numeros no campo de usuario, eu instancio a classe GerenciaDB e depois executo a classe loginDAL.vb passando o parametro de usuario e senha.

    Outra duvida , aqui na class AutenticaUsuarioBLL.vb eu tambem terei que receber via parametros o usuario e a senha digitada na camada de apresentação correto? e de dentro dessa camada irei repassar esses mesmos parametros para a classe loginDAL.vb e la sim verificar se o usuario esta ou nao cadastrado no banco de dados.

    Essa estrutura está correta? Voces faria assim?

    Sou iniciante e gostaria muito de ajuda e comentarios que me fizessem crescer nessa linguagem de programação.

     

    Reginaldo Ribeiro

    • Movido AndreAlvesLima quarta-feira, 1 de dezembro de 2010 22:36 (De:.NET Development - Geral)
    quarta-feira, 1 de dezembro de 2010 11:56

Respostas

  • Olá Reginaldo,

    Sim esta estrutura parece estar razoável, porém eu não faria desta forma, pois na minha opinião existe uma maneira mais simples e produtiva de se trabalhar com controle de acesso no ASP.NET:

    O ASP.NET a partir do .NET Framework 2.0 já fornece uma série de controles (aba Login) e bibliotecas (MemberShip) para lhe dar com controle de acesso e de usuários, sendo assim a grande maioria destas funcionalidades como autenticação ou autorização já está escrito e é muito fácil de utilizar.

    Isto economiza muito tempo no desenvolvimento, pois por exemplo se você quiser criar uma página para criar um novo usuário você pode usar um controle já pronto chamado CreateUserWizard, se você quiser criar uma tela de login você pode usar o controle Login, ambos são customizavéis e podem ser encontrados na aba Login na ToolBox do Visual Studio.

    Para você ver como isto é facil, faça um teste simples, arraste um controle Login para uma página (Login.aspx) e arraste o controle CreateUserWizard para uma outra página (CreateUser.aspx), você poderá perceber ao rodar as páginas que eles funcionam, mas como? Você irá perceber que automaticamente o ASP.NET irá adicionar um arquivo chamado ASPNETDB.MDF dentro de uma nova pasta chamada App_Data que poderá ser visualizada através do solution Explorer. Este arquivo gerado nada mais é que um Banco de Dados completo com toda a estrutura necessária para gerenciamento de segurança (Usuários, Grupos, Papéis, Autorização, Autenticação e etc), e se você quisesse criar esta estrutura em um banco de dados existente também é possivel. Ou seja o MemberShip além de fornecer funcionalidades e componentes de controle de acesso que pode ser usado nos poupa o tempo de modelar um banco dados adequado para este tipo de aplicação, e algumas tarefas complexas como criptografia fica implícito para o desenvolvedor.

    Enfim, vou lhe passar abaixo alguns links a respeito do MemberShip para que você possa explorar melhor seus recursos:

    http://www.macoratti.net/07/05/aspn_umr.htm

    http://www.linhadecodigo.com.br/Artigo.aspx?id=1023&pag=1

    http://www.asp.net/moving-to-aspnet-20/tutorials/membership

     

    Atenciosamente

     

     


    Se o post foi útil marque como resposta. - Advanced Web Application - MCP - Twitter: @mpghelli
    quarta-feira, 1 de dezembro de 2010 15:51

Todas as Respostas

  • Olá Reginaldo,

    Sim esta estrutura parece estar razoável, porém eu não faria desta forma, pois na minha opinião existe uma maneira mais simples e produtiva de se trabalhar com controle de acesso no ASP.NET:

    O ASP.NET a partir do .NET Framework 2.0 já fornece uma série de controles (aba Login) e bibliotecas (MemberShip) para lhe dar com controle de acesso e de usuários, sendo assim a grande maioria destas funcionalidades como autenticação ou autorização já está escrito e é muito fácil de utilizar.

    Isto economiza muito tempo no desenvolvimento, pois por exemplo se você quiser criar uma página para criar um novo usuário você pode usar um controle já pronto chamado CreateUserWizard, se você quiser criar uma tela de login você pode usar o controle Login, ambos são customizavéis e podem ser encontrados na aba Login na ToolBox do Visual Studio.

    Para você ver como isto é facil, faça um teste simples, arraste um controle Login para uma página (Login.aspx) e arraste o controle CreateUserWizard para uma outra página (CreateUser.aspx), você poderá perceber ao rodar as páginas que eles funcionam, mas como? Você irá perceber que automaticamente o ASP.NET irá adicionar um arquivo chamado ASPNETDB.MDF dentro de uma nova pasta chamada App_Data que poderá ser visualizada através do solution Explorer. Este arquivo gerado nada mais é que um Banco de Dados completo com toda a estrutura necessária para gerenciamento de segurança (Usuários, Grupos, Papéis, Autorização, Autenticação e etc), e se você quisesse criar esta estrutura em um banco de dados existente também é possivel. Ou seja o MemberShip além de fornecer funcionalidades e componentes de controle de acesso que pode ser usado nos poupa o tempo de modelar um banco dados adequado para este tipo de aplicação, e algumas tarefas complexas como criptografia fica implícito para o desenvolvedor.

    Enfim, vou lhe passar abaixo alguns links a respeito do MemberShip para que você possa explorar melhor seus recursos:

    http://www.macoratti.net/07/05/aspn_umr.htm

    http://www.linhadecodigo.com.br/Artigo.aspx?id=1023&pag=1

    http://www.asp.net/moving-to-aspnet-20/tutorials/membership

     

    Atenciosamente

     

     


    Se o post foi útil marque como resposta. - Advanced Web Application - MCP - Twitter: @mpghelli
    quarta-feira, 1 de dezembro de 2010 15:51
  • Reginaldo,

    Realmente considere o que o colega Marcus Ghelli escreveu inclusive os artigos. Essas preocupações com login são repetitivas, por exemlo, sempre tem um pequeno formulário para registro, um outro para fazer login e quando o usuário não se lembra da senha. E as regras para cada usuário, o que ele pode ou não acessar? E a criptografia disso tudo? A Microsoft disponibilizou uma série de ferramentas para isso tudo, como o Marcus colocou. É esse o caminho!

    quarta-feira, 1 de dezembro de 2010 16:57
  • Prezado(a),

    Estou migrando seu post para o fórum de Arquitetura de Soluções.

    Por favor, das próximas vezes que tiver alguma dúvida relacionada a esse assunto, poste por lá.

    Obrigado.


    André Alves de Lima
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    quarta-feira, 1 de dezembro de 2010 22:36
  • Olá,

    Caso seu problema tenha sido resolvido, favor marcar como resposta os posts que lhe ajudaram a esclarecer sua dúvida, pois isto facilita aos demais usuários do forúm a encontrarem as informações procuradas.

    Obrigado


    Se o post foi útil marque como resposta. - Advanced Web Application - MCP - Twitter: @mpghelli
    sexta-feira, 3 de dezembro de 2010 14:44