ASP.NET MVC Авторизация на основе параметров маршрута - PullRequest
6 голосов
/ 07 марта 2011

Мой сайт позволяет людям редактировать сообщения. Я хочу, чтобы люди редактировали только свои сообщения. Я хотел бы получить атрибут авторизации, например:

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

Но кажется, что параметры атрибутов должны быть статическими, что делает это невозможным. Есть ли способ обойти это?

1 Ответ

9 голосов
/ 07 марта 2011

Да.

Если вы создаете атрибут, который наследует от AuthorizeAttribute,

, вы сможете получить доступ к параметрам маршрута:

protected override bool AuthorizeCore(HttpContextBase httpContext)
{
    var postId = httpContext.Request.RequestContext.RouteData.Values["Id"];
    .
    .
    .
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...