Domanda

Ho un sito Web ASP.Net 2.0 con SQL Server come database e C # 2005 come linguaggio di programmazione. Il sito Web è quasi completo e tutti i collegamenti funzionano correttamente. Ma voglio impedire agli utenti normali di aprire un paio di pagine. Quando un utente fa clic su tali collegamenti specifici, si apre un'altra pagina che contiene un controllo di accesso ASP. L'utente deve fornire un ID utente e una password validi per visualizzare i collegamenti che puntano alle pagine restrittive. Ma essendo un principiante, non so come sfruttare tutta la potenza del controllo ASP Login. Perché, se un utente viene a conoscenza dell'URL esatto delle pagine riservate, può ignorare il controllo di accesso e accedere direttamente a tali pagine digitando l'URL nella barra degli indirizzi. Voglio impedirlo. Se l'utente digita l'URL direttamente nella barra degli indirizzi, desidero che la pagina stessa verifichi se l'utente è stato convalidato tramite il controllo Login e visualizza la pagina o punta l'utente alla pagina Login.

Come posso implementare questa funzione ??

Grazie.

Lalit Kumar Barik

È stato utile?

Soluzione

Dovresti verificare lo stato di accesso dell'utente ad ogni evento Page_Load () su pagine che devono controllare le autorizzazioni, o semplicemente inserire il codice di autenticazione in un file CS che verrà incluso in tutti gli altri file.

A seconda dell'architettura di autenticazione scelta (è sufficiente utilizzare la variabile di sessione o creare un ID di sessione con i cookie), è necessario adattare il codice di conseguenza.

Il modo più semplice sarebbe gestire gli accessi attraverso l'oggetto sessione. Quando l'utente accede correttamente con le credenziali giuste, puoi impostare Session [" logg_in "] = true . E su ogni evento Page_Load () delle pagine che desideri proteggere, dovrai effettuare il seguente controllo.

Aggiungi questo codice all'inizio della tua funzione Page_Load ():

  if (Session["logged_in"] != null && (bool)Session["logged_in"] == true){
    Response.Write("I'm logged in!");
  }else{
    Response.Write("I'm not logged in.");
  }

Tieni presente che va bene per le semplici applicazioni Intranet, ma se vuoi entrare in architetture di accesso più sicure, leggi di più sull'argomento, poiché il relo solo sulle variabili di sessione non è sicuro perché le sessioni possono essere highjack .

Altri suggerimenti

Ti consigliamo di dare un'occhiata alla sezione location della configurazione web.

In quella sezione, puoi definire fino al livello della pagina i diritti di accesso, quindi non importa se gli utenti conoscessero l'URL delle pagine protette, ASP.NET non li lascerebbe entrare.

Quindi dovresti aggiungere qualcosa del tipo:

<location path="SecuredPage.aspx">
  <system.web>
     <authorization>
        <deny users="?"/>
     </authorization>
  </system.web>
</location>

Il "quoty deny users = "?" " " bit dice " Nega tutti gli utenti anonimi " ;.

Puoi anche impostarlo per consentire solo determinati ruoli, se li stai utilizzando.

Ulteriori informazioni sulla sezione Autorizzazione sono disponibili qui:

  

Elemento di autorizzazione

Questo è cibo per i servizi di abbonamento ASP.Net. Dai un'occhiata a questo articolo e anche la grande serie su 4GuysFromRolla.

L'iscrizione consente di archiviare le informazioni utente / password utilizzate, tra l'altro, dal controllo di accesso. Associato alla configurazione dell'autorizzazione, sarai in grado di restringere direttamente l'accesso a pagine specifiche fino a utenti o ruoli specifici.

Sarà necessario un modo per gestire le sessioni di accesso per ciascun utente. Di seguito sono riportati alcuni tutorial che potrebbero aiutarti:

http://www.codeproject.com/KB/session/NoCookieSessionLogin.aspx

http://www.dotnetspider.com /resources/5597-Handling-Session-for-Login-Logout.aspx

Vorrei creare una tabella dei ruoli per gli utenti. Chiunque acceda ottiene il ruolo 'normale'. Gli usi speciali designati dalle loro credenziali ottengono ruoli assegnati per accedere a una pagina o sezione del tuo sito Web. Alcuni utenti (come te) otterrebbero un ruolo di amministratore che consente loro automaticamente di accedere a tutto.

Attiva una funzione chiamata CheckIsInRoles ('Admin', 'Normal', 'whateverRoleYouChoose') che restituisce un valore booleano. Se vero, carica la pagina; in caso contrario, non farlo.

Ancora meglio non visualizzare un collegamento se non nel ruolo corretto.

Questo ha l'ulteriore vantaggio di chiunque effettui l'accesso una volta sola e quindi acceda a tutte le pagine di cui ha bisogno senza dover accedere ogni volta.

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