我想制作一个自定义的AuthorizeAttribute类,如下所述:Override Authorize Attribute in ASP.NET MVC。是否可以将方法参数传递给该方法的属性?
的诀窍是,被授权的用户与否不仅仅取决于他正在执行什么方法,但参数,以及:
[MyCustomAuthorize(id)]
[HttpGet]
public ActionResult File(Guid id)
{
}
基本上,用户将被授权看到一些文件,但不是其他人,所以我想将ID传递给我的自定义授权属性。但我似乎无法做到这一点,因为名称'id'不在范围内。
我知道我可以做的逻辑,以确保用户有权访问该文件的方法开始,但我有几种方法,都将需要这样做,并且它会更清洁,如果我可以做它作为[Authorize]属性的一部分。
嗯,我可能没有资格在“真的知道我在做什么”类别。你会建议我只是检查他们是否有每个方法内的权限呢? – GendoIkari
不一定。如果一个动作结果被缓存,当用户执行一个GET时,它将不会执行*。因此,操作中的权限检查将不会运行。通常,像角色提供商或AzMan这样的现成解决方案最适合那些不想重新发明车轮的人。 –