У меня следующий маршрут:
{язык} / {контроллер} .mvc / {действие} / {идентификатор}
После того, как пользователь выбрал язык, он будет поддерживаться на языке значений маршрута.
http://localhost:4000/de/Account.mvc/Register
У меня проблема, если пользователь попадает на страницу, требующую авторизации. Затем он перенаправляется на http://localhost:4000/Account.mvc/Login?ReturnUrl=%2fde%2fAccount.mvc%2fProfileData
Страница входа настроена в web.config и не позволяет использовать параметр из маршрута. Страница после входа в систему в порядке (http://localhost:4000/de/Account.mvc/ProfileData), но сама страница входа не имеет языка значений маршрута.
Как я могу это исправить?
ИЗМЕНИТЬ
Я использовал ответ Дарина, но мне пришлось включить весь код из исходного фильтра авторизации (AuthorizeAttribute.cs). Причина зафиксирована в этом файле. Он обрабатывает случай, когда неавторизованный пользователь может получить защищенную страницу из кеша.
Вот комментарий в коде:
// ** IMPORTANT **
// Since we're performing authorization at the action level, the authorization code runs
// after the output caching module. In the worst case this could allow an authorized user
// to cause the page to be cached, then an unauthorized user would later be served the
// cached page. We work around this by telling proxies not to cache the sensitive page,
// then we hook our custom authorization code into the caching mechanism so that we have
// the final say on whether a page should be served from the cache.