Sto lavorando all'applicazione 'ASP.NET MVC 4'. Sto usando/apprendo SimpleMembershipProvider e cerco di attenermi alla logica predefinita creata da VS2012
con lo Internet template
(se non sbaglio, quello con "SimpleMembershipProvider" appena estratto dalla confezione).Come dovrei usare ReturnUrl = ViewBag.ReturnUrl in MVC 4
Sono bloccato al AccountController
in cui non riesco proprio a capire come esattamente mettere posso usare questo metodo:
private ActionResult RedirectToLocal(string returnUrl)
{
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
Da quello che ho capito l'idea è quella di ottenere reindirizzato alla posizione da cui hai deciso di accedere (esattamente quello che voglio realizzare). Ho preso uno sguardo a come viene utilizzato nella vista:
@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl }))
cercare un posto in cui in realtà ViewBag.ReturnUrl
è impostato con un certo valore e ho solo ottenuto questo metodo qui:
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
e sono diventando piuttosto confuso su come esattamente dovrei ottenere la posizione/url. Ho impostato alcuni punti di interruzione e non ho mai visto returnUrl
essere qualcosa di diverso da null
che in questo scenario mi sembra abbastanza logico dal momento che non ottiene alcun valore da nessuna parte (a meno che mi manchi qualcosa ovviamente).
Quindi non riesco davvero a capire come funziona. Pubblico quanto sopra solo per dimostrare che ho provato a fare i compiti, ho indagato il più possibile ma non ho trovato una risposta, quindi chiedo qui. Potresti fornire spiegazioni/esempi su come funziona?
Bene, ho questa domanda - 'returnUrl' è abbastanza affidabile da basare il controllo condizionale su di esso. Quello che voglio è implementare una logica specifica se il reindirizzamento è da 'AdminController' che in questo caso è 'returnUrl =/admin' stringa. Anche se penso di iniziare a capire come funzionano le cose sono ancora in dubbio se questa variabile è abbastanza sicura o può essere facilmente modificata? – Leron
Non è sicuro e può essere facilmente modificato poiché si trova nella stringa di query. Chiunque può modificare questo valore nel proprio browser web. –
questo non ha funzionato per me. Tuttavia puoi sempre fare: HttpContext.Request.Params ["ReturnUrl"]; – Tomer