CSharp:MVC Action Filter e Autenticazione
From Aino Wiki
Descrizione
Per limitare l'accesso a pagine se non effettuato il login.
Segue esempio di creazione di una classe controller da cui far ereditare ed incapsulare le verifiche di autenticazione. Si esegue una verifica in sessione se l'utente è loggato.
using XXX.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace BITrends.Controllers { public class BaseController : Controller { #region Public Properties public UserLogin CurrentUser { get { UserLogin u = null; if (Session["User"] != null) { u = (UserLogin)Session["User"]; } return u; } set { Session["User"] = value; } } #endregion protected override void OnActionExecuting(ActionExecutingContext filterContext) { string controllerName = filterContext.Controller.ToString(); string action = filterContext.ActionDescriptor.ActionName; // Slavo eccezioni si controlla che si sia fatta l'autenticazione if (controllerName != "XXX.Controllers.ControllerX" && action != "Logon" && action != "Construction" && !Request.IsLocal) { if (CurrentUser == null) { filterContext.Result = new RedirectToRouteResult( new RouteValueDictionary( new { action = "Logon", controller = "ControllerX" })); return; } } base.OnActionExecuting(filterContext); } } }
L'esempio è un obbrobrio in quanto occorre usare degli attributi associati alle action e non un controllo puntuale sul nome!!!
Link da vedere: blogs.msdn.com
C# | MVC | Principi teorici