gpt4 book ai didi

asp.net-mvc-3 - 在ASP.NET MVC3的自定义授权属性中使用操作参数

转载 作者:行者123 更新时间:2023-12-03 11:35:23 27 4
gpt4 key购买 nike

我有一个 Controller ,仅在加载特定参数时才应请求授权。例如,当参数ID为8时。

我想出了使用这样的自定义验证属性的方法:

public class MyAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (/* Action's inputparameter ID = 8 */)
{
return base.AuthorizeCore(httpContext);
}
return true;
}
}

我的 Action 看起来像这样(不是很有趣)
[MyAuthorize]
public ActionResult Protected(int id)
{
/* custom logic for setting the viewmodel from the id parameter */
return View(viewmodel);
}

问题是,正如您看到的那样,我不知道如何在authorize属性中检查该ID参数。
您能帮我解决问题吗?

最佳答案

如果将id作为请求参数(GET或POST)或路由数据参数传递:

protected override bool AuthorizeCore(HttpContextBase httpContext)
{
// first look at routedata then at request parameter:
var id = (httpContext.Request.RequestContext.RouteData.Values["id"] as string)
??
(httpContext.Request["id"] as string);
if (id == "8")
{
return base.AuthorizeCore(httpContext);
}
return true;
}

关于asp.net-mvc-3 - 在ASP.NET MVC3的自定义授权属性中使用操作参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5549371/

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