Prática recomendada para autorizar todos os usuários para apenas uma página
-
09-06-2019 - |
Pergunta
Qual é a melhor maneira de autorizar todos os usuários em uma única página em um site asp.net.
Exceto a página de login e uma outra página, nego a todos os usuários a visualização de páginas do site.
Como você torna esta página acessível a todos os usuários?
Solução
Tenho usado a autenticação de formulários e criado os objetos GenericIdentity e CustomPrincipal necessários que me permitem aproveitar as funções do tipo User.IsInRole que você normalmente só obtém com a autenticação do Windows.
Dessa forma, no meu arquivo web.config, posso fazer coisas como...
<location path="Login.aspx">
<system.web>
<authorization>
<allow users ="*" />
</authorization>
</system.web>
</location>
<location path="ManagementFolder">
<system.web>
<authorization>
<allow roles ="Administrator, Manager" />
</authorization>
</system.web>
</location>
Outras dicas
Eu criei uma classe base de "página" que lida com esse tipo de coisa.Todas as minhas páginas podem ser decoradas com o atributo RequiresLogin se for necessário um login para visualizá-las.Se o atributo não estiver presente, a página estará acessível a todos.
Exemplo:
<RequiresLogin()> _
<RequiresPermission("process")> _
Partial Class DesignReviewEditProgressPage
Inherits MyPage 'which inherits System.Web.UI.Page and deal with logins itself
...
End Class
A classe MyPage verifica quais atributos estão sendo marcados para si mesma e se RequiresLogin estiver presente, ela encaminha você para uma página de login.
Acredito que isso pode ser adaptado para se adequar ao seu próprio problema.