Gen*_*ari 5 asp.net asp.net-mvc custom-attributes
我想创建一个自定义 AuthorizeAttribute 类,如下所述:Override Authorize Attribute in ASP.NET MVC。
诀窍是,用户是否被授权不仅取决于他正在执行的方法,还取决于参数:
[MyCustomAuthorize(id)]
[HttpGet]
public ActionResult File(Guid id)
{
}
Run Code Online (Sandbox Code Playgroud)
基本上,用户将被授权查看某些文件,但不能查看其他文件,因此我想将 id 传递给我的自定义授权属性。但我似乎无法这样做,因为名称“id”不在范围内。
我知道我可以执行逻辑来确保用户可以在方法开始时访问该文件,但是我有几种方法都需要完成此操作,如果我可以将其作为[授权] 属性。
不,那不是合法的 C#。
但是,您可以访问子类型的RouteValues内部AuthorizeAttribute。
在内部,例如,OnAuthorization您可以执行以下操作:
object id = filterContext.RouteData.Values["id"];
Run Code Online (Sandbox Code Playgroud)
不过要小心。你真的需要知道你在这里做什么。身份验证、授权和缓存之间的交互非常复杂。
| 归档时间: |
|
| 查看次数: |
1840 次 |
| 最近记录: |