2010-01-14 12 views
5

Mam dziwny problem z uwierzytelnianiem formularzy asp.net. Ten problem występuje tylko w przypadku 3 użytkowników z ponad 30 użytkowników, którzy pomyślnie się zalogowali. Używam bardzo podstawowego kodu uwierzytelniania, którego użyłem wiele razy i nigdy nie widziałem tego problemu. Po pomyślnym uwierzytelnieniu użytkowników i utworzeniu pliku cookie auth, dodaniu plików cookie i odpowiedzi. Wywołanie metody FormsAuthentication.GetRedirect (userid, false). Została wywołana metoda Application_AuthenticateRequest w pliku Global.asax.FormsAuthentication authCookie ma wartość null tylko dla niektórych użytkowników

Natychmiast po zapisaniu "dobrego" pliku cookie i przekierowaniu, plik cookie jest pusty. Uruchomiłem kod za pomocą debuggera, a plik cookie jest tylko zerowy dla tych 3 użytkowników. Ale plik cookie wygląda tak samo jak plik cookie dla wielu użytkowników, którzy pomyślnie zalogowali się.

Wszelkie pomysły? Jest to standardowy kod, który powinien działać.

+0

Spróbuj odtworzyć problem z Fiddler i zobacz, czy ustawiony jest auth cookie. –

+0

Czy są jakieś ustawienia na komputerach użytkowników, które mogą blokować tworzenie plików cookie? – keyboardP

+1

Z tego samego komputera mbalkema może zalogować się z powodzeniem jako on sam, ale jako jeden z tych trzech użytkowników plik cookie nie został pomyślnie ustawiony. Nie jest to kwestia ich komputera tak bardzo, jak coś dziwnego dzieje się w module FormsAuthentication –

Odpowiedz

2

Czy jesteś pewien, że "dobre" ciasteczko zostało zapisane i wychodzi z odpowiedzi? Jest możliwe w FormsAuthentication, aby dobry plik cookie został dodany do nagłówka, ale odpowiedź jest zabijana w drodze wyjścia przez inny błąd systemu (na przykład w3wp.exe ulega awarii), więc nowa odpowiedź jest generowana bez pliku cookie i następuje przekierowanie tak czy inaczej.

W moim własnym doświadczeniu z problemem podobnym do tego miałem własną klasę główną, która uległa awarii po uwierzytelnieniu (i utworzeniu cookie) i zamiast napisać odpowiedni plik cookie, całkowicie usunąłem plik cookie z odpowiedzi.

+0

Joel dziękuje za odpowiedź. Nie był to dokładnie twój problem, ale twoja rada, by sprawdzić ciasteczko po dodaniu do odpowiedzi, ale przed przekierowaniem i authCookie = null check in Global.asax okazała się być bardzo pomocna. Jak się okazało, długość ciągu grup AD lub znak w ciągu AD Group uszkodził plik cookie. Nie używałem grup z AD, więc przestałem je otrzymywać po uwierzytelnieniu. Teraz wszystko działa. Dzięki jeszcze raz. – mbalkema

Powiązane problemy