2009-07-01 15 views
8

Mam aplikację sieci Web, która używa dostawców członkostwa i roli asp.net w celu umożliwienia użytkownikom, którzy są członkami pewnych ról, dostępu do różnych stron w zależności od przydziału ról.Autoryzacja formularzy ASP.NET - automatyczne logowanie przy użyciu konta testowego podczas debugowania?

Podczas debugowania chciałbym, aby aplikacja automatycznie logowała się przy użyciu konta testowego, dzięki czemu mogę sprawdzić funkcjonalność przypisań ról i nie muszę przechodzić przez wprowadzanie poświadczeń na stronie logowania za każdym razem. Czy istnieje prosty sposób na zrobienie tego?

+0

Powinieneś zaakceptować [odpowiedź] (http://stackoverflow.com/a/3265562/284240). –

Odpowiedz

3

Ten kod wykonuje zadanie. W Login.aspx za Page_Load imprezy:

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

MSDN Documentation

Uwaga: Membership wykorzystuje odniesienie System.Web.Security.

0

Czy możesz po prostu umieścić kod w zdarzeniu ładowania, aby ustawić nazwy użytkownika i ciągi haseł i zwolnić zdarzenie onclick przycisku logowania?

0

Alternatywnie istnieją również narzędzia takie jak Selenium IDE, które jest wtyczką do Firefoksa. Jego głównym celem jest zapewnienie pewnego rodzaju testów dla interfejsów użytkownika. W tym celu można rejestrować akcje wykonywane w interfejsie użytkownika. Możliwe jest tylko zapisanie poświadczeń wprowadzonych dla użytkownika testowego i zapisanie ich. Następnym razem, gdy wrócisz, wykonasz skrypt, który automatycznie wypełnia niezbędne informacje.

Istnieją inne narzędzia, które specjalizują się w celu automatycznego wypełniania formularza na stronie internetowej. Selen jest bardziej uważany za środowisko testowe, ale użyłem go również do takich celów. Oczywiście to tylko obejście.

0

W przypadku page_load można wykorzystać FormsAuthentication.SetAuthCookie:

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

Próbowałem tej metody, ale strona logowania nadal się potknęła. – CharlieG

2

W metodzie Application_AuthenticateRequest (aka Applications AuthenticateRequest Event) w pliku Global.asax dodać kod, który sprawdza, jeśli prowadzisz witrynę w obrębie debuggera (coś takiego jak system.Diagnostics.Debugger.IsAttached) i, jeśli tak, to utwórz bilet do logowania, utwórz plik cookie i dołącz go do sesji. Biblioteka FormsAuthentication zapewnia to, czego potrzebujesz, jeśli nie ma go w swoim regionie.

11

Jeff ma rację, można to zrobić koryta metoda global.asax:

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

okrzyki

+0

Prawie tam; Otrzymuję uwierzytelnienie, ale strona Login.aspx nadal się potknie i wyświetla monit o podanie danych uwierzytelniających. – CharlieG

+0

Czy strona logowania jest stroną domyślną? Ponieważ to jest to, o czym myślę, że jest to problem ... spróbuj ustawić inną stronę jako domyślną i ustawić uwierzytelnianie, aby przekierować na stronę logowania tylko, jeśli użytkownik nie jest uwierzytelniony ...Pozdrawiam – Marko

+0

Domyślną stroną jest strona, nad którą pracuję (nie login.aspx). – CharlieG

0

FormsAuthentication.RedirectFromLoginPage używa defaultUrl zdecydować, gdzie przekierować po logowania. Upewnij się więc, że masz poprawny URL inny niż zdefiniowany w LoginPage.aspx.

FormsAuthentication.RedirectFromLoginPage("userName", True); 

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

Mam nadzieję, że to trochę pomaga.

Powiązane problemy