«обратные» авторизованные страницы перенаправляются для входа - PullRequest
1 голос
/ 01 февраля 2010

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

<location path="Login_ForgotUserID.aspx">
    <system.web>
        <authorization>
            <allow users="?" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>

Проблема в том, что когда аутентифицированный пользователь пытается получить к нему доступ, он перенаправляет его на страницу входа. Как я могу отправить их куда-нибудь более логично? obtw, я ограничен .NET v2.0x

Ответы [ 4 ]

2 голосов
/ 01 февраля 2010

Почему бы просто не добавить if ( Request.IsAuthenticated ) { Response.Redirect ... к событию Page_Load страницы, вам не нужно беспокоиться о его настройке?К сожалению, вы можете настроить только одну страницу для обработки входа в систему, и если кто-то не имеет доступа, они будут перенаправлены на него.Вы также можете просто проверить ReturnURL при входе в систему, чтобы узнать, пришло ли оно со страницы, а пользователь прошел проверку подлинности, но для меня это нелепое решение.

1 голос
/ 10 февраля 2010

Хорошо, поэтому ответ таков: мне нужно изменить меню перед его рендерингом. Я никогда не находил способ обработать SiteMap путем изменения авторизации / SecurityTrimming. Поэтому я решил попытаться изменить SiteMap у источника и выяснил, как изменить MenuItems , поскольку они были связаны . Это казалось наиболее эффективным курсом.

0 голосов
/ 10 февраля 2010

Здесь вы также можете посмотреть на использование ролей.

Если бы вы добавили всех пользователей по умолчанию к роли, скажем «аутентифицировано», то вы могли бы иметь:

<location path="Login.aspx">
  <system.web>
    <authorization>
        <deny roles="authenticated" />
        <allow users="*" />
    </authorization>
  </system.web>
</location>

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

Два других способа сделать похожую вещь:

  1. Напишите пользовательского провайдера карты сайта , чтобы гарантировать, что эти страницы не возвращаются в древовидный элемент управления при аутентификации пользователя.
  2. Напишите адаптер элемента управления для элемента управления TreeView, чтобы он не отображал эти страницы.
0 голосов
/ 01 февраля 2010

Не уверен, как это сделать в web.config. На странице Login_ForgotUserID.aspx, вероятно, проверьте, прошел ли аутентификация пользователя перед загрузкой / рендерингом. Если пользователь аутентифицирован, перенаправьте его на какую-нибудь безопасную домашнюю страницу или страницу по умолчанию.

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