blocca l'accesso ai metodi area / controller ma consente ai controller ereditati di eseguire i metodi, asp .net mvc5

1

Sto cercando di scoprire come bloccare un'intera area / controller dall'accesso digitando url website.com/area1/basecontroller/method1 (quest'area contiene anche le visualizzazioni che verranno visualizzate), pur essendo ancora in grado di ereditare detto controller e utilizzare il metodo dal controller originale come website.com/area2/extendedbasecontroller/method1.

Non ci sarebbe un metodo1 nel controllore esteso, semplicemente eseguirà method1 dal basecontroller

È possibile o potrebbe essere raggiunto in un modo diverso?

    
posta user1787923 08.01.2014 - 10:24
fonte

2 risposte

1

Un altro modo è quello che vuoi qui: estrai una classe che fa method1 e poi fai riferimento alla classe in entrambi i controller. I controller MVC non dovrebbero mai chiamarsi in generale.

    
risposta data 07.08.2014 - 15:25
fonte
0

Non so se questo è un buon modo per farlo o no, ma sembra che questo compia ciò che sto cercando di fare:

public class BlockActionFilter : ActionFilterAttribute,IActionFilter
{
    void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext) 
    {    
        var area = filterContext.RouteData.DataTokens["area"].ToString();

        if(area == "area1")
        {
            filterContext.Result = new RedirectResult("~/Home/Index");
        }

        this.OnActionExecuting(filterContext);
    }            
}

Posso accedere ai metodi in basecontroller in area1 ereditandolo in extendedbasecontroller in area2 e utilizzandolo tramite quello, ma non posso usare direttamente basecontroller in area1.

    
risposta data 09.01.2014 - 08:44
fonte

Leggi altre domande sui tag