Программно проверьте, требует ли страница аутентификации на основе настроек web.config - PullRequest
4 голосов
/ 29 декабря 2011

Я хотел бы знать, есть ли способ проверить, требует ли страница аутентификации на основе настроек web.config.В основном, если есть такой узел

  <location path="account">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>

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

Ответы [ 3 ]

7 голосов
/ 29 декабря 2011

Решение состоит в том, чтобы создать анонимный идентификатор (принципал) и передать его в метод CheckUrlAccessForPrincipal.Он определит, является ли страница общедоступной или требует аутентификации.

См. Код ниже:

var principal = new GenericPrincipal(new GenericIdentity(String.Empty, String.Empty), new string[]{});
bool requiredAuthentication = UrlAuthorizationModule.CheckUrlAccessForPrincipal(Page.AppRelativeVirtualPath, principal, Request.HttpMethod);
4 голосов
/ 29 декабря 2011

Вы проверяете страницу, которую запросил пользователь?Это маловероятно, так как запрос никогда не попадет на страницу.Проверьте рабочий процесс авторизации URL.

enter image description here

http://www.asp.net/web-forms/tutorials/security/membership/user-based-authorization-cs

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

Я немного сбит с толку относительно того, что именно вы спрашиваете, но чтобы использовать ваш web.config для принудительной аутентификации на постраничной основе, вам нужно что-то вроде этого:

 <location path="Forms/Administration/Default.aspx">
        <system.web>
            <authorization>
                <allow roles="Administrator, User, AdditionalUser" />
            </authorization>
        </system.web>
    </location>

Если вам нужно быть более детальным, вам нужно добавить логику в ваш средний уровень и затем проверить загрузку страницы или URL-запрос (если MVC).

...