Pracuję nad aplikacją mvc .net i używam uwierzytelniania formularzy. Chcę przekierować użytkownika na stronę, której zażądał po uzyskaniu uwierzytelnienia. Każda pomoc będzie doceniona.Przekierowanie do żądanej strony po uwierzytelnieniu
Odpowiedz
Jeśli utworzysz projekt aplikacji internetowej ASP.NET MVC 3 lub 4, będzie to pełny przykład użycia adresu URL powrotu podczas uwierzytelniania.
Dodanie AuthorizeAttribute do kontrolera w celu wymuszenia uwierzytelnienia spowoduje przekierowanie użytkownika do metody logowania i automatyczne dołączenie parametru returnUrl. Stamtąd trzeba śledzić to, jak pokazać swój formularz logowania:
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
a następnie dodać go do formularza logowania w kolekcji Trasa:
@*//ReSharper disable RedundantAnonymousTypePropertyName*@
@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) {
@*//ReSharper restore RedundantAnonymousTypePropertyName*@
}
Gdy użytkownik wysyła login, zakładając one uwierzytelniać prawidłowo, to po prostu przekierować do ReturnURL:
[HttpPost]
public ActionResult Login(LoginModel model, string returnUrl)
{
return RedirectToLocal(returnUrl);
}
najtrudniej jest śledzenie na ReturnURL pośrednictwem sekwencji GET/POST.
Jeśli chcesz zobaczyć, jak działa AuthorizeAttribute, post: this StackOverflow pokazuje ustawienie returnUrl z pierwotnym żądaniem.
Musisz także upewnić się, że validus returnUrl naprawdę jest lokalnym adresem URL, lub stajesz się podatny na ataki typu "open redirection". RedirectToLocal() to metoda pomocnika z MVC szablon Application 4 internetowego, który robi to Walidacja:
private ActionResult RedirectToLocal(string returnUrl)
{
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
- 1. Jak Symfony2 przekierowanie do żądanej strony po zalogowaniu
- 2. Przekierowanie z powrotem do strony po zalogowaniu
- 3. automatyczne przekierowanie do strony
- 4. Przekierowanie strony
- 5. ASP.net Przekierowanie do strony wywołującej
- 6. Vue.js przekierowanie do innej strony
- 7. Przekierowanie do strony głównej, jeśli użytkownik jest już zalogowany
- 8. Logowanie phantomjs, przekierowanie i renderowanie strony po zakończeniu strony Kończenie
- 9. 403 - Odmowa dostępu po uwierzytelnieniu
- 10. Przekierowanie do ReturnUrl po pomyślnym uwierzytelnieniu plików cookie w Owin, Katana i Nancy
- 11. Symfony2, przełącz się na HTTPS po uwierzytelnieniu
- 12. Logowanie xmpp kończy się niepowodzeniem po uwierzytelnieniu
- 13. automatyczne przekierowanie do innej strony html
- 14. Przekierowanie ze strony cshtml
- 15. Przekierowanie Ajax do strony zamiast Aktualizowanie celu
- 16. Passport.js + Express.js przekazuje użytkownika do pierwotnego miejsca docelowego po uwierzytelnieniu
- 17. php przekierowanie do strony z komunikatem
- 18. Tornado przekierowanie do strony z parametrami
- 19. Przekierowanie pojedynczej strony http do https
- 20. Przekierowanie htaccess 4 określone strony do https
- 21. Trwałe przekierowanie ze strony http do https
- 22. Jak się wylogować z Google po uwierzytelnieniu
- 23. Przekierowanie po zalogowaniu: Web.config
- 24. Przekierowanie z strony z obrazami na Facebooku do strony internetowej
- 25. Przekierowanie do strony logowania zamiast strony indeksu w Yii
- 26. Ustaw domyślne nagłówki $ httpProvider po uwierzytelnieniu użytkownika
- 27. Klucz sesji django zmienia się po uwierzytelnieniu
- 28. Zapobieganie iframe przekierowanie strony nadrzędnej
- 29. Passport.js: jak uzyskać dostęp do obiektu użytkownika po uwierzytelnieniu?
- 30. Przekierowanie Angular2 po zalogowaniu
bardzo dziękuję, że to działa teraz :) –
@HediNaily: jeden punkt do zapamiętania nie jest zaufanie ReturnURL oraz do sprawdź to przed użyciem, aby przekierować użytkownika –
@ mohsen.d Uzgodnione. RedirectToLocal() to pomocnik MVC 4 zawarty w szablonie aplikacji internetowej, który sprawdza poprawność adresu URL przed przekierowaniem. Dodam go do odpowiedzi dla osób bez metody pomocnika. – mfanto