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 })); } }
public BaseController() { this.db = new DatabaseContext(); }