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);
}
}
Ben var her eyleme üstündeki bu filtreyi kullanın ve çek yetkilidir için, Eylem Adı, Denetleyici Adı ve Alan Adı gerekir. Yani bu isimleri System.Web.HttpContextBase
kullanımı gibi AuthorizeCore()
yönteminde almak için herhangi bir yolu var mı? Cevap sonra yok ise nasıl bu isimleri almak ve açıkçası ben kontrolörleri aslında bir şey ViewContext.RouteData.Values["Controller"]
gibi elle her isim eklemek istemiyorum, atfetme geçirebilirsiniz:
[ActionAuthorize(actionName=Action, controller=ControllerName, area=AreaName)]
public ActionResult Index() {
return View();
}
herhangi birinin herhangi bir fikri var mı hakkında?
protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext)
{
var rd = httpContext.Request.RequestContext.RouteData;
string currentAction = rd.GetRequiredString("action");
string currentController = rd.GetRequiredString("controller");
string currentArea = rd.Values["area"] as string;
...
}
"Sen RouteData dan alamadan" bir alan elde etmek için çalışacak iyi bir cevap. ** Şimdi ** düzenlendi, ben geri döneceğim. – gdoron
Bu sadece ASP.NET MVC 4'te olabilir, ancak alan rd.DataTokens ["alan"] 'da bulunur. –
Satır var rd = httpContext.Request.RequestContext.RouteData; için var rd = HttpContext.Current.Request.RequestContext.RouteData; Bir parametreden daha standart olanı kullanmak daha iyidir :) –