Usuário com melhor resposta
Usando o controller Account

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
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.
- Sugerido como Resposta André Borges MedeirosModerator segunda-feira, 9 de maio de 2011 16:10
- Marcado como Resposta Eder CostaModerator terça-feira, 27 de dezembro de 2011 11:40
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 -
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 -
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 -
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
-
-
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.
- Sugerido como Resposta André Borges MedeirosModerator segunda-feira, 9 de maio de 2011 16:10
- Marcado como Resposta Eder CostaModerator terça-feira, 27 de dezembro de 2011 11:40