2008-09-18 6 views

ответ

4

Попробуйте Context.User.Identity.AuthenticationType

Go для ответа людей PB в

+0

У меня есть принял ваш ответ, потому что ваш был самым быстрым и работал :) – GateKiller 2008-09-18 12:17:44

+1

Thi s неверно. В общем случае IIdentity.AuthenticationType может содержать любую строку, которая может не совпадать с режимом аутентификации, установленным в web.config. Я использовал бы решение из @pb. – Joe 2008-09-18 13:48:13

28

Режим собственности от authenticationsection: AuthenticationSection.Mode Property (System.Web.Configuration). И вы можете даже изменить его.

// Get the current Mode property. 
AuthenticationMode currentMode = 
    authenticationSection.Mode; 

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

Эта статья описывает how to get a reference to the AuthenticationSection.

-2

использовать запрос xpath //configuration/system.web/authentication[mode]?

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; 
} 
+1

Нет, это не работает в общем случае. Приложение ASP.NET наследует настройки от machine.Config и от всех других файлов web.config выше в дереве виртуальных каталогов: см. Http://msdn.microsoft.com/en-us/library/ms178685.aspx Ваша техника только смотрит на самый низкий файл web.config. – Joe 2008-09-18 13:38:41

+1

XPath - это не то, что должно использоваться для синтаксического анализа конфигурации любым способом. Использование библиотек, предоставляемых MS, является гораздо более эффективным и поддерживаемым подходом. Вышеприведенный комментарий является прекрасным примером того, почему не использовать его, а также тот факт, что не все платформы обязательно будут использовать конфигурационные документы для аутентификации или других настроек; другим действительным случаем является изменение местоположения типа аутентификации, тогда вы должны заменить строку с жесткой кодировкой, перекомпилировать, а затем перераспределить. – 2016-03-28 21:18:11

11

Импорт System.Web.Configuration имен и сделать что-то вроде:

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

Вы также можете получить режим проверки подлинности с помощью статического ConfigurationManager класса, чтобы получить участок, а затем перечисление AuthenticationMode.

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

The difference between WebConfigurationManager and ConfigurationManager


Если вы хотите получить имя константы в указанном перечислении вы можете сделать это с помощью Enum.GetName(Type, Object) метода

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