Prática recomendada para autorizar todos os usuários para apenas uma página

StackOverflow https://stackoverflow.com/questions/18460

  •  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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top