6
我的网站允许人们编辑帖子。我希望人们只编辑他们的帖子。我想要一个授权属性,如:基于路由参数的ASP.NET MVC授权
[CanEditPost(PostId = Id)]
ActionResult Edit(int Id) { }
但它似乎参数属性必须是静态的,这使得这是不可能的。有什么办法可以解决这个问题吗?
我的网站允许人们编辑帖子。我希望人们只编辑他们的帖子。我想要一个授权属性,如:基于路由参数的ASP.NET MVC授权
[CanEditPost(PostId = Id)]
ActionResult Edit(int Id) { }
但它似乎参数属性必须是静态的,这使得这是不可能的。有什么办法可以解决这个问题吗?
是的。
如果您创建一个从AuthorizeAttribute
继承属性,
你应该能够访问路径参数:
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var postId = httpContext.Request.RequestContext.RouteData.Values["Id"];
.
.
.
}
不是我应该重写'AuthorizeCore'? – Xodarap 2011-03-07 19:52:09
@CD:所以我必须依赖命名约定?或者通过财产的名称? – Xodarap 2011-03-07 20:01:49
@ Xodarap:是的,我想不出任何其他选择,路线如何工作,不是吗? – 2011-03-07 20:05:00