All posts tagged MVC

E ae pessoal ? tudo em cima ????

Nesse post vou mostrar uma ( das varias ) maneiras de criar um repositório de usuários no ASP.NET MVC. Esse recurso pode ser utilizado por exemplo, em conjunto com o recurso de BaseController para controlar o acesso de usuários. Nesse caso iremos trabalhar com Cookies

Bom vamos la, mãos na massa….


namespace Portal.Seguranca
{
    public class UsersRepository
    {
         public static Models.Usuario.Usuario usuarioLogado
         {
              get
              {
                    var usr = HttpContext.Current.Request.Cookies["UserCookieAuthentication"];
                    if (usr == null)
                    {
                          return null;
                    }
                    else
                    {
                          string NovoToken = CryptographyRepository.Descriptografar(usr.ToString());
                          int IDUsuario;

                          if (int.TryParse(NovoToken, out IDUsuario))
                          {
                                return Usuario.getById(IDUsuario);
                          }
                          else
                          {
                                return null;
                          }
                     }
              }
        }

        public static bool deslogar()
        {
               try
               {
                       HttpCookie http = new HttpCookie("UserCookieAuthentication");
                       http.Expires = DateTime.Now.AddDays(-1);
                       HttpContext.Current.Response.Cookies.Add(http);

                       return true;
               }
               catch(Exception ex)
               {
                      throw ex;
               }
        }

        public static bool registrarUsuario(Models.Seguranca.Usuario usr)
        {
              try
              {
                    if (usr == null)
                    {
                        return false;
                    }
                    else
                    {
                        //Criando um objeto cookie
                        HttpCookie UserCookie = new HttpCookie("UserCookieAuthentication");

                        //Setando o ID do usuário no cookie
                        UserCookie.Value = CryptographyRepository.Criptografar(usr.Codigo.ToString());

                        //Definindo o prazo de vida do cookie
                        UserCookie.Expires = DateTime.Now.AddHours(2);

                        //Adicionando o cookie no contexto da aplicação
                        HttpContext.Current.Response.Cookies.Add(UserCookie);

                        return true;
                    }
            }
            catch (Exception ex)
            {
                 throw ex;
            }
       }
    }
}

Desse ponto endiante, pode simplesmente, fazer a chamada da seguinte forma.


Models.Usuario.Usuario usr = UsersRepository.usuarioLogado;

Lembrando que os Coockies de preferencia devem estar criptografados para segurança.

Ate a próxima pessoal.


Tudo beleza pessoa ?

Hoje vou mostrar uma forma de se trabalhar com Login no ASP.NET MVC. Existem varias formas, mas uma que eu acho interessante e simples de se trabalhar é criarmos um Controller Padrão ( aqui chamado de BaseController) do qual todos os outros Controllers herdaram e assumiram a operação de login do mesmo. A validação do Login pode ser feita por sessões, arquivos XML, Cookies , e afins, essa questão depende do gosto do fregues… :D

Mas vamos colocar a mão na massa….


namespace MVC.Controllers
{
     [HandleError]
     public class BaseController : Controller
     {
          [HandleError]
          protected override void OnActionExecuting(ActionExecutingContext ctx)
          {
               base.OnActionExecuting(ctx);

               Models.Seguranca.Usuario usr = UsersRepository.usuarioLogado;

               if (usr != null)
               {
                    //Codigo caso esteja logado.
               }
               else
               {
                     //Codigo caso nao esteja logado.
                     ctx.HttpContext.Response.Redirect("/Login");
               }
           }
      }
}

Pessoal essa uma maneira bem simples, toda vez que um controller que herde de BaseController for chamado o controller ira executar sua operação padrão ( base.OnActionExecuting(ctx); ) e depois o que for programado por nos. E para ver o resultado basta criarmos um Controller da seguinte forma.

namespace Portal.Controllers
{
     public class HomeController : BaseController
     {
         public ActionResult Index()
         {
               return View();
         }
     }
}

Simples não ?

Em um próximo artigo irei exemplificar o código presente no bloco

Models.Seguranca.Usuario usr = UsersRepository.usuarioLogado;

Ate a próxima pessoal.