"/>

关于c#:检测Web.Config身份验证模式

关于c#:检测Web.Config身份验证模式

Detecting Web.Config Authentication Mode

说我有以下web.config:

1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        </authentication>
    </system.web>
</configuration>

使用ASP.NET C#,如何检测Authentication标记的Mode值?


身份验证部分中的mode属性:AuthenticationSection.Mode属性(System.Web.Configuration)。 您甚至可以对其进行修改。

1
2
3
4
5
6
7
// Get the current Mode property.
AuthenticationMode currentMode =
    authenticationSection.Mode;

// Set the Mode property to Windows.
authenticationSection.Mode =
    AuthenticationMode.Windows;

本文介绍如何获取对AuthenticationSection的引用。


导入System.Web.Configuration名称空间,然后执行以下操作:

1
2
3
4
5
6
var configuration = WebConfigurationManager.OpenWebConfiguration("/");
var authenticationSection = (AuthenticationSection)configuration.GetSection("system.web/authentication");
if (authenticationSection.Mode == AuthenticationMode.Forms)
{
  //do something
}

您还可以通过使用静态ConfigurationManager类获取该部分,然后获取枚举AuthenticationMode来获取身份验证模式。

1
AuthenticationMode authMode = ((AuthenticationSection) ConfigurationManager.GetSection("system.web/authentication")).Mode;

WebConfigurationManager和ConfigurationManager之间的区别

如果要在指定的枚举中检索常量的名称,可以使用Enum.GetName(Type, Object)方法执行此操作

1
Enum.GetName(typeof(AuthenticationMode), authMode); // e.g."Windows"

尝试Context.User.Identity.AuthenticationType

寻求PB的答案


使用xpath查询//configuration/system.web/authentication[mode]?

1
2
3
4
5
6
7
protected void Page_Load(object sender, EventArgs e)
{
 XmlDocument config = new XmlDocument();
 config.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
 XmlNode node = config.SelectSingleNode("//configuration/system.web/authentication");
 this.Label1.Text = node.Attributes["mode"].Value;
}


推荐阅读