Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows身份验证模式的行为,以及窗体子元素?_C#_Asp.net_Forms Authentication - Fatal编程技术网

C# Windows身份验证模式的行为,以及窗体子元素?

C# Windows身份验证模式的行为,以及窗体子元素?,c#,asp.net,forms-authentication,C#,Asp.net,Forms Authentication,配置ASP.NET身份验证时,当您将身份验证模式设置为Windows,但有子forms元素时,应该是什么行为?例如,以下配置为默认配置: 然而,我看不到任何关于这里将要发生什么的文档。子forms元素的所有文档都假定身份验证模式为forms。特别奇怪的是,由于这是默认设置,所以没有对其进行记录。那么为什么Windows身份验证模式有forms子元素呢?子元素被忽略了吗?它只是一个例子,说明了如果您要将模式切换到表单,您可能想要什么,还是它做了更多的事情?我认为这只是为了一个例子。我无法向您指

配置ASP.NET身份验证时,当您将身份验证模式设置为
Windows
,但有子
forms
元素时,应该是什么行为?例如,以下配置为默认配置:



然而,我看不到任何关于这里将要发生什么的文档。子
forms
元素的所有文档都假定身份验证模式为
forms
。特别奇怪的是,由于这是默认设置,所以没有对其进行记录。那么为什么
Windows
身份验证模式有
forms
子元素呢?子元素被忽略了吗?它只是一个例子,说明了如果您要将模式切换到
表单
,您可能想要什么,还是它做了更多的事情?

我认为这只是为了一个例子。我无法向您指出任何文档,但请查看代码,当身份验证模式为forms时,forms设置看起来是只读的

下面是来自


公共void Init(HttpApplication应用程序){
//身份验证仅为应用程序级设置
//因此,我们可以尽早阅读应用程序配置,尝试
//跳过关联事件代理
如果(!\u fAuthChecked){
_fAuthRequired=(AuthenticationConfig.Mode==AuthenticationMode.Forms);
_fAuthChecked=正确;
}
如果(需要){
//如果模式为forms auth,则初始化
FormsAuthentication.Initialize();
app.AuthenticateRequest+=新事件处理程序(this.OnEnter);
app.EndRequest+=新的EventHandler(this.OnLeave);
}
}

请注意,FormsAuthentication.Initialize仅在模式为forms时调用,forms从web.config文件读取forms设置

代码来自文件


/// 
///通过读取初始化FormsAuthentication
///配置并获取给定对象的cookie值和加密密钥
///应用程序。
/// 
公共静态void Initialize(){
如果(_已初始化)
回来
锁定(锁定对象){
如果(_已初始化)
回来
AuthenticationSection设置=RuntimeConfig.GetAppConfig().Authentication;
settings.ValidateAuthenticationMode();
_FormsName=settings.Forms.Name;
_RequireSSL=settings.Forms.RequireSSL;
_SlidingExpiration=settings.Forms.SlidingExpiration;
如果(_FormsName==null)
_FormsName=CONFIG\u DEFAULT\u COOKIE;
_保护=设置.Forms.Protection;
_超时=(int)settings.Forms.Timeout.TotalMinutes;
_FormScookePath=settings.Forms.Path;
_LoginUrl=settings.Forms.LoginUrl;
如果(_LoginUrl==null)
_LoginUrl=“login.aspx”;
_DefaultUrl=settings.Forms.DefaultUrl;
如果(_DefaultUrl==null)
_DefaultUrl=“default.aspx”;
_CookieMode=settings.Forms.Cookieless;
_CookieDomain=settings.Forms.Domain;
_EnableCrossAppRedirects=settings.Forms.EnableCrossAppRedirects;
_TicketCompatibilityMode=settings.Forms.TicketCompatibilityMode;
_初始化=真;
}
}

<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>