Ich habe ein Szenario, das ich nicht in der Lage zu lösen:UrlHelper und Viewcontext innerhalb eines Berechtigungs Attribut
ich um meine eigene benutzerdefinierte Berechtigungs Attribut liebäugelt bin für mvc mit dem Erstellen. Die Hauptfunktionalität, die ich hinzufügen möchte, besteht darin, die Möglichkeit zu haben, zu ändern, wo der Benutzer umgeleitet wird, wenn er sich nicht in einer bestimmten Rolle befindet. Es macht mir nichts aus, dass das System sie zurück an die Anmeldeseite sendet, wenn sie nicht authentifiziert sind, aber ich möchte wählen, wo sie gesendet werden sollen, wenn sie authentifiziert sind, aber nicht auf diese Aktionsmethode zugreifen dürfen.
Hier ist, was ich tun:
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
public string Action;
public string Controller;
protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext)
{
// if User is authenticated but not in the correct role
string url = Url.Action(this.Action, this.Controller);
httpContext.Response.Redirect(url);
}
}
Und als zusätzlichen Bonus würde ich gerne Zugriff auf Viewcontext und TempData haben, bevor ich die Umleitung tun.
Irgendwelche Gedanken darüber, wie ich einen UrlHelper und ViewContext in das Attribut instanziieren könnte?
Brilliant, thx. Nachdem ich Ihre Antwort angesehen hatte, wurde mir klar, dass ich einfach gefragt hätte: "Wie gehe ich vor, um den AuthorizationContext zu bekommen?" Sobald ich das habe, bin ich gefährlich. –
Hinweis: Die Implementierung einer OnAuthorization() -Methode ist keine einfache Übung. Wenn Sie OnAuthorization() anstelle von AuthorizeCore() überschreiben, fügen Sie Code in OnAuthorization() hinzu, um das Ausgabe-Caching zu deaktivieren oder zu aktivieren. Weitere Informationen finden Sie unter http://forums.asp.net/p/1533590/3737756.aspx. – Levi