你有两个选择:
首先,你会忘了编写自定义的授权属性,只是做你的操作方法里面的检查。但是,编写自定义授权属性并不难,应该适用于您的方案。例如,我写了一个基于特定权限而非角色的权限。
像这样的东西应该为你工作:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class CustomAuthorize : AuthorizeAttribute
{
private int project_id;
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (base.AuthorizeCore(httpContext)) {
if (YourCurrentUserObject.IsPartofProject(project_id)) {
return true;
}
}
return false;
}
protected override void OnAuthorization(AuthorizationContext filterContext)
{
//get the "project id" parameter from your action method
project_id = Convert.ToInt32(filterContext.RouteData.Values.SingleOrDefault(x => x.Key == "project_id").Value);
base.OnAuthorization(filterContext);
}
}
这就足够复杂了,您必须自定义提供程序。 – Mansfield
如果它证明自己太复杂了,我可能会放弃它,因为它不是我的“学期论文/课程作业”的重点(我不确定这是否是正确的术语,这是我毕业的最后一项工作)。 尽管如此,我想学习如何在这种情况下继续进行,因为我是一般编程新手 –
我不认为我提供的答案是复杂的。但请记住,如果您还有其他问题,这里有很多人愿意帮忙!即使是那些不是主要关注点的项目,也应该适当地保持安全的习惯。 – Mansfield