예제 #1
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var request = filterContext.RequestContext.HttpContext.Request;
            var session = filterContext.RequestContext.HttpContext.Session;

            //Verifica se existe algum cookie com a identificação AuthID
            if (request.Cookies.AllKeys.Contains("AuthToken"))
            {
                var cookieAuthId = request.Cookies["AuthToken"].Value;

                //Busca o usuário no banco com o token de autenticação existente no cookie
                DatabaseContext db = new DatabaseContext();
                var usuarioDb = db.Users
                                  .Where(m => m.AuthToken == cookieAuthId)
                                  .FirstOrDefault();

                //Se o usuário existir
                if (usuarioDb != null && usuarioDb.AuthToken == cookieAuthId)
                {
                    //Guarta o nome, se está autenticado, se é administrador no ViewBag
                    //para poder utilizar em qualquer View do sistema (Ex: menus)
                    //e fazer as verificações para exibir ou ocultar elementos
                    filterContext.Controller.ViewBag.CurrentUser = usuarioDb;
                    filterContext.Controller.ViewBag.Authenticated = true;

                }
            }
        }
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var request = filterContext.RequestContext.HttpContext.Request;
            var session = filterContext.RequestContext.HttpContext.Session;

            try
            {

                //Encontra um cookie com a identificação AuthID, se não encontrar
                //será disparada uma excessão, caindo no catch.
                var cookieAuthId = request.Cookies["AuthToken"].Value;

                //Verfica se existe algum usuário no banco com o mesmo token de identificação do cookie
                DatabaseContext db = new DatabaseContext();
                var usuarioDb = db.Users
                                  .Where(m => m.AuthToken == cookieAuthId)
                                  .FirstOrDefault();

                //Se não existir nenhum usuário com esse token, ou seja, o usuarioDB virá nulo, redireciona
                //para a página de login
                if (usuarioDb == null)
                {
                    filterContext.Result = new RedirectToRouteResult(new System.Web.Routing.RouteValueDictionary(new { area = "", controller = "Authentication", action = "Login", redirectTo = request.Url }));
                }

                if (usuarioDb.UserType != this.userType)
                {
                    filterContext.Result = new RedirectToRouteResult(new System.Web.Routing.RouteValueDictionary(new { area = "", controller = "Authentication", action = "Login", redirectTo = request.Url }));
                }

            }
            catch(Exception ex)
            {
                filterContext.Result = new RedirectToRouteResult(new System.Web.Routing.RouteValueDictionary(new { area = "", controller = "Authentication", action = "Login", redirectTo = request.Url }));
            }
        }
예제 #3
0
 public BaseController()
 {
     this.db = new DatabaseContext();
 }