2009-07-01 10 views
8

Ich habe eine Webanwendung, die die asp.net-Mitgliedschafts- und Rollenanbieter verwendet, damit Logins, die Mitglieder bestimmter Rollen sind, abhängig von Rollenzuweisungen Zugriff auf verschiedene Seiten haben.ASP.NET-Formularauthentifizierung - automatische Anmeldung mit einem Testkonto beim Debuggen?

Während des Debugging möchte ich, dass sich die App automatisch mit einem Testaccount anmeldet, damit ich die Funktionalität der Rollenzuweisungen überprüfen kann und nicht jedes Mal Anmeldeinformationen auf der Anmeldeseite eingeben muss. Gibt es einen einfachen Weg, dies zu tun?

+0

Sie sollten [die Antwort] akzeptieren (http://stackoverflow.com/a/3265562/284240). –

Antwort

3

Dieser Code erledigt den Job. In Login.aspx der Page_Load Ereignis:

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

MSDN Documentation

Hinweis: Membership verwendet die System.Web.Security Referenz.

0

Könnten Sie einfach Code in das load-Ereignis einfügen, um den Benutzernamen und die Passwörter festzulegen und das onclick-Ereignis der Login-Schaltfläche auszulösen?

0

Als Alternative gibt es auch Tools wie Selenium IDE, die ein Plugin für Firefox ist. Sein Hauptzweck besteht darin, eine Art von Test für die Benutzeroberflächen bereitzustellen. Zu diesem Zweck können Sie Aktionen aufzeichnen, die auf der Benutzeroberfläche ausgeführt werden. Sie können die Anmeldeinformationen, die Sie für den Testbenutzer eingeben, einmal aufzeichnen und speichern. Wenn Sie das nächste Mal wiederkommen, führen Sie das Skript aus, das automatisch die notwendigen Informationen eingibt.

Es gibt andere Tools, die für das automatische Ausfüllen eines Formulars auf einer Webseite spezialisiert sind. Selen ist eher als Testumgebung gedacht, aber ich habe es auch für solche Zwecke benutzt. Natürlich ist dies nur ein Workaround.

0

im Page_Load -Ereignis Sie FormsAuthentication.SetAuthCookie verwenden können:

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

Ich habe diese Methode versucht, aber die Anmeldeseite wird immer noch ausgelöst. – CharlieG

2

Im Application_AuthenticateRequest Verfahren (auch bekannt als die Anwendungen AuthenticateRequest Ereignis) in der Datei global.asax, Code hinzufügen, wenn Sie die Website ausgeführt wird überprüft innerhalb des Debuggers (etwas wie system.Diagnostics.Debugger.IsAttached) und, wenn Sie sind, haben Sie es erstellen Sie das Anmeldeticket, erstellen Sie das Cookie und hängen Sie es an die Sitzung. Die FormsAuthentication-Bibliothek bietet, was Sie benötigen, wenn der Membership-Provider es nicht hat.

11

Jeff richtig ist, können Sie es Trog global.asax Methode tun:

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

prost

+0

Fast dort; Ich werde authentifiziert, aber die Login.aspx-Seite wird immer noch ausgelöst und fordert mich zur Eingabe von Anmeldeinformationen auf. – CharlieG

+0

Ist Ihre Anmeldeseite die Standardseite? Weil das ist, was ich denke, es ist ein Problem ... versuchen Sie, eine andere Seite als Standard einzurichten und die Authentifizierung auf die Anmeldeseite nur umleiten, wenn der Benutzer nicht authentifiziert ist ...Prost – Marko

+0

Die Standardseite ist auf die Seite eingestellt, an der ich gerade arbeite (nicht login.aspx). – CharlieG

0

Die FormsAuthentication.RedirectFromLoginPage die defaultUrl verwendet zu entscheiden, wo nach dem Login umleiten. Stellen Sie also sicher, dass Sie eine andere gültige URL als Ihre LoginPage.aspx definiert haben.

FormsAuthentication.RedirectFromLoginPage("userName", True); 

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

Ich hoffe, dass dies ein wenig hilft.

Verwandte Themen