Как перенаправить на неавторизованную страницу вместо страницы входа, когда пользователь уже вошел в систему? - PullRequest
1 голос
/ 14 ноября 2009

Как мне установить мой токен Authorize (Roles = "blah") для перенаправления на "Вы не авторизованы для этого", когда пользователь уже вошел в систему, но не в нужной роли? В настоящее время он перенаправляет на страницу входа, а это не то, что нам нужно. Мы считаем, что ввод пользователя в заблуждение может быть перенаправлен на эту страницу, поскольку он уже вошел в систему. Если пользователь не вошел в систему, он должен перенаправить на страницу входа.

Ответы [ 4 ]

4 голосов
/ 14 ноября 2009

Способ AuthorizeAttribute заключается в том, что сначала он проверяет, прошел ли пользователь проверку подлинности, а затем проверяет, играет ли он роль. Если какое-либо из этих условий не будет выполнено, он просто вернет возврат HttpUnauthorizedResult , который, в свою очередь, установит код ответа на 401. Для достижения того, что вы хотите, вам нужно реализовать свой собственный IAuthorizationFiler .

1 голос
/ 14 ноября 2009

Вы должны проверить сообщение в блоге Кази Манзура Рашида о провайдерах пользовательских авторизаций: http://weblogs.asp.net/rashid/archive/2009/09/06/asp-net-mvc-and-authorization-and-monkey-patching.aspx. Это может быть довольно сложный зверь, чтобы сделать это правильно. Таким образом, это сводится к нескольким вариантам, 2 довольно простым способам сделать это «неправильно» и одному довольно сложному способу сделать это «правильно». Ваш звонок. В любом случае - стоит прочитать сообщение в блоге.

1 голос
/ 14 ноября 2009

Ваша страница входа может проверить, аутентифицирован ли пользователь (HttpContext.User.Identity.IsAuthenticated), а затем перенаправить на другую страницу.

Или, в качестве альтернативы, выполните визуализацию по-другому для аутентифицированного пользователя (скройте форму входа и вместо этого отобразите соответствующее сообщение).

0 голосов
/ 10 мая 2012

Способ AuthorizeAttribute заключается в том, что сначала он будет проверять, прошел ли пользователь проверку подлинности, а затем проверяет его роль. Если какое-либо из этих условий не выполнено, он просто вернет HttpUnauthorizedResult, что, в свою очередь, установит код ответа 401.

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

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