[Authorize]
attributo è bello e utile invenzione MS, e spero che possa risolvere i problemi che ho adessoCome fare Autorizza attribuire tornare personalizzato 403 pagina di errore invece di reindirizzamento alla pagina di accesso
Per essere più precisi:
Quando client corrente non viene autenticato - [Authorize]
reindirizza da azione messa in sicurezza alla pagina di accesso e dopo l'accesso ha avuto successo - riporta utente indietro, questo è buono.
Ma quando client corrente già autenticato ma non autorizzato a eseguire un'azione specifica - tutto quello che serve è di visualizzare solo il mio generale 403 pagina.
E 'possibile senza spostare la logica di autorizzazione all'interno del corpo del controllore?
Aggiornamento: Il comportamento ho bisogno dovrebbe essere semanticamente uguale a questo schizzo:
public ActionResult DoWork()
{
if (!NotAuthorized())
{
// this should be not redirect, but forwarding
return RedirectToAction("403");
}
return View();
}
così - ci dovrebbe senza alcun redirect e URL deve essere rimanere lo stesso, ma il contenuto della pagina dovrebbe essere sostituito con 403 pagine
Update 2: ho implementato schizzo in questo modo:
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
[CustomActionFilter]
public ActionResult About()
{
return View();
}
public ActionResult Error_403()
{
return Content("403");
}
}
public class CustomActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.Result = new ContentResult { Content = "403" };
}
}
e non può ottenere come correttamente l'ora di esecuzione per HomeController.Action_403() in modo che visualizzi 403.
Update 3:
filterContext.Result = new ViewResult() { ViewName = "Error_403" };
quindi questa è una risposta su come rendere specifica guarda il modello ... ma non hai ancora idea di come eseguire un altro controller - comunque, è una buona soluzione.
@casperOne: perché diavolo hai aggiunto il commento com'era dalla mia persona ??? – zerkms
Il commento sul lato ostacola la leggibilità del codice. Posizionandolo sopra impedisce la visualizzazione delle barre di scorrimento ed è solo una parte del processo di pulizia. – casperOne
@casperOne: sono un idiota e ho bisogno di occhiali, mi dispiace ;-( – zerkms