Вы должны различать аутентификации и авторизации. Ваш фрагмент кода обращается к первому («Я известен этому сайту»), но не последнему («Мне разрешили доступ к этой странице»).
Как рекомендует @santiagoIT, роли могут быть лучшим решением для реализации необходимой вам авторизации. Некоторые элементы управления, такие как LoginView, обладают поддержкой ролей и аутентификации, поэтому вы можете использовать их для отображения различного контента в зависимости от роли, в которой находится пользователь.
Общим подходом является отображение различных меню пользователям разные роли, так что они представлены только с меню, которые имеют отношение к их ролям - для этого часто используется LoginView.
В качестве альтернативы вы можете контролировать видимость содержимого на отдельных страницах, снова используя LoginView, чтобы пользователи, не прошедшие проверку подлинности, получили одно сообщение, те, кто прошел проверку подлинности, но не разрешили просматривать страницу вторым сообщением, а также тем, кто оба аутентифицируются и позволяют просматривать страницу, просматривая содержимое.
Если вы просто хотите перенаправить пользователя, который прошел аутентификацию, но не имеет необходимого доступа для просмотра страницы, вы также можете проверить, что пользователь является соответствующей ролью (Roles.IsUserInRole) и перенаправлен на «You нет доступа .. "страница если нет.
Если вы действительно осведомлены о безопасности, вы можете комбинировать ограниченный подход к меню/виду с проверкой полномочий на каждой странице.
Я чувствую вашу боль от этого. Я думал, что это будет легче сделать, но я тоже не нашел решения для этого. Я не хочу, чтобы еще неавторизованные пользователи, прошедшие проверку подлинности, увидели страницу входа в систему, когда они уже вошли в систему. –
Отметьте это сообщение. http://stackoverflow.com/questions/14731707/redirect-user-to-another-page-from-web-config-when-his-role-has-not-enough-permi?rq=1 – Nishant