Po zalogowaniu użytkownika do mojej witryny, w której korzystam z uwierzytelniania formularza, w jaki sposób mogę zatrzymać użytkownika, aby się zalogować Zaloguj się na stronie rejestrującej się, jeśli ma on już zarejestrowany rejestr: &.Jak powstrzymać użytkownika przed logowaniem/rejestracją i innymi stronami nieautoryzowanymi w aplikacji MVC3?
6
A
Odpowiedz
5
Dwie drogi "z góry na głowie":
1 - niestandardowe Action Filter
który przekierowuje użytkownika ze strony, jeśli są one rejestrowane w
public class RedirectAuthenticatedRequests : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if(filterContext.HttpContext.Request.IsAuthenticated) {
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary(new {
controller = "SomeController",
action = "SomeAction"
}
));
}
base.OnActionExecuting(filterContext);
}
}
2 - proste. sprawdź metodę działania login
, jeśli użytkownik jest zalogowany.
if(Request.IsAuthenticated) return RedirectToAction("SomeOtherView");
5
łatwe wyjście jest sprawdzenie w metodzie kontrolera (login/register), jeśli użytkownik jest uwierzytelniony, a jeśli jest przekierowanie użytkownika do strony, którą chcesz:
coś takiego na stronie logowania (samo z rejestru):
//
// GET: /Login/Index
public ActionResult Index()
{
if(User.Identity.IsAuthenticated){
//redirect to some other page
return RedirectToRoute("Home", "Index");
}
return View();
}
0
można sprawdzić właściwość User.Identity.IsAuthenticated i przekierować je odpowiednio.
Ja bym stwórz atrybut Attribute [AuthorizeAttribute] w rzeczywistości. – Rhapsody
@ Czy możesz wyjaśnić, jakie kroki należy podjąć, aby ten Atrybut? – updev
@Xander masz na myśli ActionFilter na Global.aspx? – updev