Jak RPM1984 wskazał, nie trzeba przekierować użytkownika do określonego adresu URL po zalogowaniu się.
Jeśli jest to konieczne, aby usunąć parametr ReturnUrl
ciągu kwerendy istnieje kilka opcji. Prawdopodobnie najłatwiej jest w swojej stronie logowania/kontrolerze sprawdzić, czy istnieje ReturnUrl
parametr w kolekcji Request.QueryStrings
. Jeśli istnieje, możesz wykonać przekierowanie z powrotem na stronę logowania, ale bez numeru ReturnUrl
.
Inną opcją byłoby utworzenie niestandardowej implementacji dla FormsAuthenticationModule
, która jest klasą, która obsługuje uwierzytelnianie użytkownika na podstawie jego biletu uwierzytelniania formularza i jest odpowiedzialna za przekierowanie nieautoryzowanych użytkowników do strony logowania. Niestety, metody klasy FormsAuthenticationModule
nie są wirtualne, więc nie można utworzyć klasy pochodnej i zastąpić potrzebnych metod, ale dobrą wiadomością jest to, że klasa jest całkiem prosta - może w sumie 100-200 linii kodu i użycie Odbłyśnik można szybko utworzyć własną niestandardową klasę FormsAuthenticationModule
. Jeśli pójdziesz tą trasą (której nie polecałbym), wszystko, co musisz zrobić, to wyjąć kod w metodzie OnLeave
, która jest zbindowana na parametrze ReturnUrl
. (Oprócz modyfikowania tej klasy należy również skonfigurować plik Web.config, aby aplikacja korzystała z niestandardowej klasy FormsAuthenticationModule
, a nie w systemie .NET Framework.)
Happy Programming!
FormsAuthentication.SetAuthCookie to co robię właściwą now.I prostu chcesz go usunąć z paska adresu. –
Potem pojawia się mój pierwszy komentarz - równie dobrze możesz nie używać w ogóle uwierzytelniania formularzy. Nie ma prostego sposobu na zrobienie tego (o czym wiem). Pamiętaj, że DOWOLNA strona może przekierować na stronę logowania (i program ASP.NET to robi). Jedynym sposobem, jaki mogę wymyślić jest podłączenie się do zdarzenia Global.asax i przepisanie adresu URL. Dlaczego obchodzi Cię, czy jest tam URL? – RPM1984
i ten komentarz jest sprzeczny z twoim komentarzem "Ponieważ próbuję przekierować użytkownika na statyczną stronę po zalogowaniu, aby dokonać pewnych wyborów.". ReturnURL nie uniemożliwi ci wykonania własnego przekierowania po zalogowaniu, CHYBA nie używasz RedirectFromLoginPage, o którym powiedziałeś, że nie jesteś. Więc nie wiem, jaki masz problem. W jaki sposób funkcja ReturnUrl uniemożliwia wykonanie przekierowania? – RPM1984