2009-07-01 10 views
8

Possiedo un'applicazione Web che utilizza i membri di appartenenza e provider di ruoli di asp.net per consentire agli account di accesso membri di determinati ruoli di accedere a varie pagine in base alle assegnazioni di ruolo.Autenticazione moduli ASP.NET: accesso automatico con un account di prova durante il debugging?

Durante il debug mi piacerebbe che l'app effettuasse l'accesso automaticamente con un account di prova, così posso verificare la funzionalità delle assegnazioni di ruolo e non dover passare attraverso l'immissione di credenziali nella pagina di accesso ogni volta. C'è un modo semplice per farlo?

+0

È necessario accettare [la risposta] (http://stackoverflow.com/a/3265562/284240). –

risposta

3

Questo codice fa il lavoro. In Page_Load di Login.aspx:

Membership.ValidateUser("<userName>", "<password>") 
    FormsAuthentication.RedirectFromLoginPage("<userName>", True) 

MSDN Documentation

Nota: Membership utilizza il riferimento System.Web.Security.

0

È possibile inserire il codice nell'evento di caricamento per impostare le stringhe di nome utente e password e attivare l'evento onclick del pulsante di accesso?

0

In alternativa esistono anche strumenti come Selenium IDE che è un plugin per Firefox. Il suo scopo principale è quello di fornire alcuni tipi di test per le interfacce utente. A tale scopo è possibile registrare le azioni eseguite sull'interfaccia utente. Quello che potresti fare è registrare le credenziali che inserisci per l'utente del test una volta e salvarle. La volta successiva che torni, esegui lo script che automaticamente inserisce le informazioni necessarie.

Esistono altri strumenti specializzati per l'auto-compilazione di un modulo su una pagina Web. Il selenio è più pensato come un ambiente di prova, ma l'ho anche usato per tali scopi. Ovviamente questa è solo una soluzione.

0

nell'evento Page_Load è possibile utilizzare FormsAuthentication.SetAuthCookie:

FormsAuthentication.SetAuthCookie("username", false); 
+0

Ho provato questo metodo ma la pagina di accesso continua a essere inciampata. – CharlieG

2

Nel metodo Application_AuthenticateRequest (aka le applicazioni AuthenticateRequest eventi) nel file Global.asax, aggiungere il codice che controlla se si esegue il sito all'interno del debugger (qualcosa come system.Diagnostics.Debugger.IsAttached) e, se lo sei, fallo creare il ticket di accesso, creare il cookie e collegarlo alla sessione. La libreria FormsAuthentication fornisce ciò che è necessario se il provder dell'appartenenza non lo possiede.

11

Jeff è giusto, lo si può fare attraverso il metodo global.asax:

protected void Application_AuthenticateRequest(object sender, EventArgs e) 
{ 
    if(System.Diagnostics.Debugger.IsAttached && User == null) 
    { 
     FormsAuthentication.SetAuthCookie("dmike", false); 
    } 
} 

applausi

+0

Quasi lì; Vengo autenticato, ma la pagina Login.aspx viene ancora inciampata e richiede le credenziali. – CharlieG

+0

La pagina di accesso è la pagina predefinita? Perché è quello che sto pensando che sia un problema ... prova ad impostare un'altra pagina come predefinita e imposta l'autenticazione per reindirizzare alla pagina di accesso solo se l'utente non è autenticato ...evviva – Marko

+0

La pagina predefinita è impostata sulla pagina su cui sto lavorando (non login.aspx). – CharlieG

0

Il FormsAuthentication.RedirectFromLoginPage utilizza il defaultUrl per decidere dove reindirizzare dopo il login. Quindi assicurati di avere un URL valido diverso da LoginPage.aspx definito.

FormsAuthentication.RedirectFromLoginPage("userName", True); 

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login.aspx" 
       ... 
       defaultUrl="~/AnyFolder/PageAfterLogin.aspx" 
       ... /> 
</authentication> 

Spero che questo aiuti un po '.

Problemi correlati