Quando recorremos ao Membership para implementarmos a segurança da nossa aplicação, um dos problemas que podemos ter é quando definimos que determinada pasta será acedida apenas por utilizadores previamente autenticados e nela contemos ficheiros que usamos noutras páginas que não precisam desta mesma autenticação para serem acedidas, como ficheiros de estilos (CSS), imagens, etc.
Se tivermos por exemplo a seguinte estrutura:
/ (root)
/Imagens
/Imagens/usericon.png
/Estilos
/Estilos/estilos.css
/Login.aspx
/MinhaPaginaProtegida.aspx
/OutraPaginaProtegida.aspx
E no web.config definirmos que, para aceder a qualquer página na aplicação temos que estar autenticados,
<authorization>
<deny users=“*“ />
</authorization>
se usarmos o ficheiro de estilos ( /Estilos/estilos.css ) na nossa página de login, ao ser carregada no browser irá aparecer sem qualquer personalização feita. Isto porque na página Login.aspx teremos algo do tipo
<link type=”text/css” rel=”Stylesheet” href=”Estilos/estilos.css” />
e como este ficheiro está numa pasta dentro da zona protegida, o browser não vai conseguir carregar os estilos definidos na página.
Para podermos contornar isso temos que indicar no web.config que o ficheiro poderá ser acedido mesmo não sendo feita a autenticação na aplicação. Para isso usamos o elemento <location> e no atributo path indicamos onde está o ficheiro. Por fim, indicamos que todos os utilizadores (incluindo os anónimos) poderão aceder a ele, fazendo assim com que a nossa página de login consiga ir buscar os estilos a serem carregados.
<location path=“estilos.css“>
<system.web>
<authorization>
<allow users=“*“/>
</authorization>
</system.web>
</location>