基于Route Params的ASP.NET MVC授权

时间:2011-03-07 19:35:24

标签: asp.net-mvc asp.net-mvc-3 forms-authentication asp.net-mvc-routing

我的网站允许人们编辑帖子。我希望人们只编辑他们的帖子。我想要一个授权属性,如:

[CanEditPost(PostId = Id)]
ActionResult Edit(int Id) { }

但似乎属性的参数必须是静态的,这使得这是不可能的。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:9)

如果您创建的属性继承自AuthorizeAttribute

您应该能够通过以下方式访问路线参数:

protected override bool AuthorizeCore(HttpContextBase httpContext)
{
    var postId = httpContext.Request.RequestContext.RouteData.Values["Id"];
    .
    .
    .
}