【发布时间】:2016-06-08 14:13:17
【问题描述】:
我使用属性路由 (MVC) 来调用控制器方法以及具有自定义属性的授权属性:
[Route("{id:int}")]
[UserAuth(ProjectId=3)]
public ActionResult Select(int id) {
return JsonGet(Magic.DoSomethingMagic());
}
UserAuth 只是一个简单的 AuthorizationAttribute:
public class UserAuthAttribute:AuthorizeAttribute {
public int ProjectId { get;set;}
protected override bool AuthorizeCore(HttpContextBase contextBase) {
var currentProject=new Project(ProjectId);
return currentProject.UserIsMember()
}
}
现在我想将它与 projectId 的参数一起使用。以下代码不起作用,但应该显示我想要实现的目标(我不能只添加 id)
[Route("{id:int}")]
[UserAuth(ProjectId=id)]
public ActionResult Select(int id) {
return JsonGet(Magic.DoSomethingMagic());
}
【问题讨论】:
-
不要将 id 传递给
UserAuth。而是从Request对象中获取它。如果您希望灵活地将 id 传递或不传递给UserAuth,则可以使参数为空,如果它为空,则在Request中查找它。
标签: c# asp.net-mvc asp.net-mvc-5 attributes custom-attributes