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