blog}

ASP.NET Routing e Authorization

Ho utilizzato il routing asp.net per la gestione delle lingue in un sito web registrando nell’Application_Start del Global.asax:

routes.Add("en", New Route("en/{*path}", New GlobalizationRouteHandler(CultureInfo.GetCultureInfo("en"))))
routes.Add("it", New Route("it/{*path}", New GlobalizationRouteHandler(CultureInfo.GetCultureInfo("it-IT"))))

prendendo spunto dal seguente post http://weblogs.asp.net/paulomorgado/archive/2010/01/31/web-site-globalization-with-asp-net-routing.aspxIn questo modo una pagina in lingua inglese viene riscritta come http://www.miosito.com/it/pagina.aspx ed un pagina in lingua inglese come http://www.miosito.com/en/pagina.aspx.Il problema di questa tecnica nasce nel momento in cui alcune pagine appartengono a direttori il cui accesso è limitato dall’ “access rules” standard, aggiungendo quindi al direttorio un file web.config simile al seguente che permette l’accesso al solo ruolo “Admin”:

<configuration>
    <system.web>
        <authorization>
            <allow roles="Admin" />
            <deny users="*" />
        </authorization>
    </system.web>
</configuration>

Pertanto l’url http://www.miosito.com/direttorio/pagina.aspx viene reindirizzato alla pagina di login a meno che l’utente non sia identificato ed appartenente al ruolo Admin.Se però l’indirizzo diventa http://www.miosito.com/it/direttorio/pagina.aspx, ovvero l’indirizzo riscritto dal routing, la limitazione imposta nel web.config sembra non funzionare ed è possibile accedere alla pagina protetta!Per prevenire questo fenomeno è sufficiente aggiungere al web.config principale del sito:

<location path="it/direttorio">
        <system.web>
            <authorization>
                <allow roles="Admin"/>
                <deny users="*" />
            </authorization>
        </system.web>
    </location>

    <location path="en/direttorio">
        <system.web>
            <authorization>
                <allow roles="Admin"/>
                <deny users="*" />
            </authorization>
        </system.web>
    </location>

ti è piaciuto l'articolo? condividi

sharing my ICT knowledge and expertise through the documentation of my experiences

Eros Sormani

Mi occupo di progettazione e sviluppo di soluzioni software e di creazione, implementazione e mantenimento di infrastrutture digitali

Altri Articoli del BLOG

Torna su