2017-01-09 2 views
0

При настройке аутентификации ASP.NET, каково поведение, которое должно быть, когда вы устанавливаете режим аутентификации на Windows, но у вас есть дочерний элемент forms? Например, следующая конфигурация задается по умолчанию in MSDN:Поведение режима проверки подлинности Windows, с формой дочернего элемента?

<authentication mode="Windows"> 
    <forms 
     name=".ASPXAUTH" 
     loginUrl="login.aspx" 
     defaultUrl="default.aspx" 
     protection="All" 
     timeout="30" 
     path="/" 
     requireSSL="false" 
     slidingExpiration="true" 
     cookieless="UseDeviceProfile" domain="" 
     enableCrossAppRedirects="false"> 
     <credentials passwordFormat="SHA1" /> 
    </forms> 
    <passport redirectUrl="internal" /> 
</authentication> 

Однако я вижу нулевую документацию того, что должно произойти здесь. Вся документация дочернего элемента forms предполагает, что режим аутентификации будет Forms. Особенно странно, что это не документировано, потому что это значение по умолчанию. Итак, почему в режиме аутентификации Windows есть дочерний элемент forms? Не игнорируется ли дочерний элемент, и он просто присутствует в качестве примера того, что вам может понадобиться, если вы должны переключить режим на Forms или сделать что-то еще?

ответ

1

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

Ниже от FormsAuthenticationModule.cs

public void Init(HttpApplication app) { // authentication is an app level setting only // so we can read app config early on in an attempt to try and // skip wiring up event delegates if (!_fAuthChecked) { _fAuthRequired = (AuthenticationConfig.Mode == AuthenticationMode.Forms); _fAuthChecked = true; } if (_fAuthRequired) { // initialize if mode is forms auth FormsAuthentication.Initialize(); app.AuthenticateRequest += new EventHandler(this.OnEnter); app.EndRequest += new EventHandler(this.OnLeave); } }

Пожалуйста, обратите внимание, что FormsAuthentication.Initialize вызывается только тогда, когда режимявляется формы, который читает формирует установку из сети. файл конфигурации.

Код из файла FormsAuthenciation.cs

/// /// Initializes FormsAuthentication by reading /// configuration and getting the cookie values and encryption keys for the given /// application. /// public static void Initialize() { if (_Initialized) return; lock(_lockObject) { if (_Initialized) return; AuthenticationSection settings = RuntimeConfig.GetAppConfig().Authentication; settings.ValidateAuthenticationMode(); _FormsName = settings.Forms.Name; _RequireSSL = settings.Forms.RequireSSL; _SlidingExpiration = settings.Forms.SlidingExpiration; if (_FormsName == null) _FormsName = CONFIG_DEFAULT_COOKIE; _Protection = settings.Forms.Protection; _Timeout = (int) settings.Forms.Timeout.TotalMinutes; _FormsCookiePath = settings.Forms.Path; _LoginUrl = settings.Forms.LoginUrl; if (_LoginUrl == null) _LoginUrl = "login.aspx"; _DefaultUrl = settings.Forms.DefaultUrl; if (_DefaultUrl == null) _DefaultUrl = "default.aspx"; _CookieMode = settings.Forms.Cookieless; _CookieDomain = settings.Forms.Domain; _EnableCrossAppRedirects = settings.Forms.EnableCrossAppRedirects; _TicketCompatibilityMode = settings.Forms.TicketCompatibilityMode; _Initialized = true; } }

 Смежные вопросы

  • Нет связанных вопросов^_^