Авторизация пользователей ASP.NET Webforms с маршрутизацией - PullRequest
0 голосов
/ 04 декабря 2011

У меня есть маршрут

        routes.MapPageRoute("clientOrder", "Contract/{contractId}/Orders",
        "~/ContractOrders.aspx");

Идея состоит в том, чтобы разрешить пользователю доступ к определенному набору контрактов.

Например, user1 имеет доступ к страницам Контракт / 001 / Заказы и Контракт / 002 / Заказы Пользователь user2 имеет доступ только к Контракту / 003 / Заказам и т. д.

Я использую проверку подлинности с помощью форм и пытаюсь ограничить доступ с помощью CheckUrlAccessForPrincipal, но он проверяет только физический доступ к странице, не логично.

Я пытался проверить доступ в Global.asax в Application_AuthorizeRequest, но Request.RequestContext.RouteData там всегда пусто, поэтому я не знаю запрашиваемый contractId. Я могу разобрать его вручную из объекта HttpRequest. Но это очень глупое и ненадежное решение.

Пожалуйста, совет

1 Ответ

0 голосов
/ 04 декабря 2011

Я считаю, что единственный способ - это добавить код для проверки contractId на уровне страницы ContractOrders.aspx, и если Id не проходит авторизацию, вы вручную перенаправляете куда-то, чтобы указать, что доступ не предоставлен .

Встроенный механизм всегда работает на физическом уровне с картами маршрутов, поэтому независимо от того, как выглядит ваш маршрут, механизм всегда проверяет доступ к ресурсу, которому сопоставлен маршрут, а не сам маршрут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...