Login Login
MORE

WIDGETS

Widgets

Wanted articles
Who is online?
Article tools

CSharp:MVC Action Filter e Autenticazione

From Aino Wiki

Jump to: navigation, search

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


Visual Studio

Author