Domanda

Qual è il modo migliore per autorizzare tutti gli utenti a una singola pagina in un sito Web asp.net.

Ad eccezione della pagina di accesso e di un'altra pagina, nego a tutti gli utenti di visualizzare le pagine del sito web.

Come si fa a rendere questa pagina accessibile a tutti gli utenti?

È stato utile?

Soluzione

Ho utilizzato l'autenticazione basata su moduli e creato gli oggetti GenericIdentity e CustomPrincipal necessari che mi consentono di sfruttare le funzioni di tipo User.IsInRole che in genere si ottengono solo con l'autenticazione di Windows.

In questo modo nel mio file web.config, posso fare cose come...

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

Altri suggerimenti

Ho creato una classe "pagina" di base che gestisce questo genere di cose.Tutte le mie pagine possono quindi essere decorate con l'attributo RequiresLogin se è richiesto un login per visualizzarle.Se l'attributo non è presente la pagina è accessibile a tutti.

Esempio:

<RequiresLogin()> _ 
<RequiresPermission("process")> _
Partial Class DesignReviewEditProgressPage
    Inherits MyPage 'which inherits System.Web.UI.Page and deal with logins itself

    ...
End Class

La classe MyPage controlla quali attributi vengono taggati e se RequiresLogin è presente, ti inoltra a una pagina di accesso.

Credo che questo potrebbe essere adattato per soddisfare il tuo problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top