none
Usando o controller Account RRS feed

  • Pergunta

  • Estou iniciando no asp.net MVC e tenho um sistema já todo pronto e quero migra-lo para o mvc(ja trabalho com webforms a bastante tempo), tenho um banco já com as tabelas do usuarios e suas permissões bem como o caminho das páginas e queria aproveitar tudo isso sem ter que implementar algo por padrão, no web forms vc tem o autentication que tb já vem padrão mais com ele conseguir personalizar e acessar meu banco e autentica tudo certinho como deve ser, minha questão é se dá pra fazer isso usando o controller já criado por padrão no mvc.

     


    Junior
    quarta-feira, 13 de abril de 2011 19:48

Respostas

  • Na verdade você pode logar o usuario na sua aplicação utilizando a quantidade de informações que você quiser.

    No exemplo que passei estou setando o cookie sem fazer nenhuma validação.

    A maioria das aplicações reais verificariam se o usuario existe na base ou em qualuqer outro repositorio antes de configurar o cookie do formsauthentication.

    Na verdade essa verificçaõ tem a ver apenas com a regra de negocio de cada aplicação.

    O exemplo mais comum é

            [HttpPost]
            public ActionResult Login(DAL.Model.Usuario usuario)
            {

                    if(usuario.login e usuario.senha existem na base de dados)
                    {
                        FormsAuthenticationTicket authenticationTicket = new FormsAuthenticationTicket(usuario.Nome, false, 60);
                        string encryptTicket = FormsAuthentication.Encrypt(authenticationTicket);
                        HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptTicket);
                        Response.Cookies.Add(authCookie);
                    }

                    return RedirectToAction("Index", "Home");
            }

     

    Abraços.

    sexta-feira, 29 de abril de 2011 16:28

Todas as Respostas

  • veja se te ajuda

     

    http://andrecypreste.wordpress.com/2011/01/25/configurando-roleprovider-com-roles-fixas/


    E-mail: dnbdub@msn.com Twitter: MaxEvol
    quarta-feira, 13 de abril de 2011 23:31
  • Maxwell obrigado por ter me respondido, como estou aprendendo sobre o MVC estou desenvolvendo um pequeno sistema para cadastro de funcionários(onde a estrutura de dados já existe) e inicialmente só queria nesse projeto so queria criar uma página de login, para que o usuário se logue e nas páginas eu possa colocar o [Autorize] que eu achei mais interesante que usar session, ou no MVC posso também trabalhar com sessões como no webforms ?

     

    Ps fui implementar o que vc me mandou e deu erro quando fui criar a classe Filtro

    o authorzeAttibute deu erro e consequentemente em algumas linhas abaixo.

     


    Junior
    quinta-feira, 14 de abril de 2011 17:59
  • session no mvc é normal igual ao webforms 

     

    segue um exemplo então de autenticação basica

     

    http://rafaelzaccanini.wordpress.com/2011/03/19/asp-net-mvc-%E2%80%93-autenticacao-basica/

     

     

    Abs


    E-mail: dnbdub@msn.com Twitter: MaxEvol
    domingo, 24 de abril de 2011 13:48
  • Existe a possibilidade de se trabalhar com FormsAuthentication.

    Insira este trecho de código dentro da tag system.web do web.config da aplicação:

    <authentication mode="Forms">
            <forms name="AutoCookie" loginUrl="/" timeout="60"></forms><!--path="/"-->
    </authentication>

     

    Sendo que o atributo loginUrl deve ser o caminho para action da que retornara a view de login.

    Na action responsavel pelo login é necessario configurar o cookie:

            [HttpPost]
            public ActionResult Login(DAL.Model.Usuario usuario)
            {
                    FormsAuthenticationTicket authenticationTicket = new FormsAuthenticationTicket(usuario.Nome, false, 60);
                    string encryptTicket = FormsAuthentication.Encrypt(authenticationTicket);
                    HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptTicket);
                    Response.Cookies.Add(authCookie);

                    return RedirectToAction("Index", "Home");
            }

    obs.: Os  dados do usuario são enviados via modelbinding nesse caso, mas podem ser acessados via FormCollection ou Request, tanto faz.

    Lembrando que para usar FormsAuthentication é necessario acrescentar a namespace System.Web.Security;.

    Tambem é necessario garantir que exista apenas um nó <authentication mode="Forms"> no web.config.

    Agora você já pode distribuir atributos [Authorize] pelas actions e controller de seu projeto.

    Abraços

     

    terça-feira, 26 de abril de 2011 00:52
  • Vini tentei fazer desse jeito, aproveitei o controler criado automaticamente pelo mvc, só lembrando que estou usando o mvc3, um duvida vc só esta passando o login e a senha não precisa passar também ?
    Junior
    quinta-feira, 28 de abril de 2011 17:37
  • Na verdade você pode logar o usuario na sua aplicação utilizando a quantidade de informações que você quiser.

    No exemplo que passei estou setando o cookie sem fazer nenhuma validação.

    A maioria das aplicações reais verificariam se o usuario existe na base ou em qualuqer outro repositorio antes de configurar o cookie do formsauthentication.

    Na verdade essa verificçaõ tem a ver apenas com a regra de negocio de cada aplicação.

    O exemplo mais comum é

            [HttpPost]
            public ActionResult Login(DAL.Model.Usuario usuario)
            {

                    if(usuario.login e usuario.senha existem na base de dados)
                    {
                        FormsAuthenticationTicket authenticationTicket = new FormsAuthenticationTicket(usuario.Nome, false, 60);
                        string encryptTicket = FormsAuthentication.Encrypt(authenticationTicket);
                        HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptTicket);
                        Response.Cookies.Add(authCookie);
                    }

                    return RedirectToAction("Index", "Home");
            }

     

    Abraços.

    sexta-feira, 29 de abril de 2011 16:28