ich eine benutzerdefinierte AuthorizationFilter wie die Anhänger verwenden:Get Action, controller und areaname und gibt es in Action Attribute
public class ActionAuthorizeAttribute : AuthorizeAttribute {
protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext) {
if(!httpContext.User.Identity.IsAuthenticated)
return false;
if(IsUserExcluded())
return false;
else
return IsRoleAuthorize(httpContext);
}
}
Ich benutze diese Filter am Anfang jeder Aktion, die ich habe, und für die Prüfung ist ermächtigt, benötige Aktionsname, Controller-Name und Bereichsname. Also gibt es eine Möglichkeit, diese Namen in AuthorizeCore()
Methode wie Verwendung System.Web.HttpContextBase
zu bekommen? Wenn die Antwort Nein ist dann, wie kann ich diesen Namen bekommen und gebe es zuzuschreiben, natürlich will ich nicht jeden Namen von Hand zu haben, tatsächlich so etwas wie ViewContext.RouteData.Values["Controller"]
in Controller:
[ActionAuthorize(actionName=Action, controller=ControllerName, area=AreaName)]
public ActionResult Index() {
return View();
}
Hat jemand eine Ahnung, darüber?
bekommen „Du sie von der Routedata holen konnte“ Ist das nicht eine gute Antwort. ** Jetzt ** wurde es bearbeitet, ich werde zurückkehren. – gdoron
Dies könnte nur in ASP.NET MVC 4 sein, aber der Bereich befindet sich in rd.DataTokens ["Bereich"]. –
Sie sollten die Zeile ändern var rd = httpContext.Request.RequestContext.RouteData; zu var rd = HttpContext.Current.Request.RequestContext.RouteData; besser, den Standard als einen Parameter zu verwenden :) –