gpt4 book ai didi

asp.net - 是否可以将方法参数传递给该方法的属性?

转载 作者:行者123 更新时间:2023-12-02 21:25:52 25 4
gpt4 key购买 nike

我想创建一个自定义 AuthorizeAttribute 类,如下所述:Override Authorize Attribute in ASP.NET MVC .

关键是,用户是否被授权不仅取决于他正在执行什么方法,还取决于参数:

[MyCustomAuthorize(id)]
[HttpGet]
public ActionResult File(Guid id)
{

}

基本上,用户将被授权查看某些文件,但不能查看其他文件,因此我想将 id 传递给我的自定义授权属性。但我似乎无法这样做,因为名称“id”不在范围内。

我知道我可以执行逻辑来确保用户可以在方法开始时访问该文件,但我有几种方法都需要完成此操作,如果我能做到这一点,那就会干净得多作为 [Authorize] 属性的一部分。

最佳答案

不,这不是合法的 C#。

但是,您可以访问 AuthorizeAttribute 子类型内的 RouteValues

在内部,例如OnAuthorization,您可以执行以下操作:

object id = filterContext.RouteData.Values["id"];

不过要小心。您确实需要知道自己在这里做什么。身份验证、授权和缓存之间的交互很复杂。

关于asp.net - 是否可以将方法参数传递给该方法的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7652325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com