基于路由参数的 ASP.NET MVC 授权

发布于 2024-10-20 14:52:27 字数 197 浏览 5 评论 0原文

我的网站允许人们编辑帖子。我希望人们只编辑他们的帖子。我想要一个像这样的授权属性:

[CanEditPost(PostId = Id)]
ActionResult Edit(int Id) { }

但似乎属性的参数必须是静态的,这使得这是不可能的。有什么办法可以解决这个问题吗?

My site allows people to edit posts. I want people to only edit their posts. I'd want an authorization attribute like:

[CanEditPost(PostId = Id)]
ActionResult Edit(int Id) { }

But it seems like parameters to attributes have to be static, which makes this impossible. Is there any way to get around this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

水染的天色ゝ 2024-10-27 14:52:27

是的。

如果您创建一个继承自 AuthorizeAttribute 的属性,

您应该能够通过以下方式访问路由参数:

protected override bool AuthorizeCore(HttpContextBase httpContext)
{
    var postId = httpContext.Request.RequestContext.RouteData.Values["Id"];
    .
    .
    .
}

Yes.

If you create an attribute that inherits from AuthorizeAttribute,

you should be able to access the route parameters by:

protected override bool AuthorizeCore(HttpContextBase httpContext)
{
    var postId = httpContext.Request.RequestContext.RouteData.Values["Id"];
    .
    .
    .
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文