2009-11-25 7 views
3

Existe-t-il un moyen de déterminer par programme si une application Web SharePoint 2007 utilise l'authentification par formulaires? Je suppose que l'une des façons pourrait être de le lire depuis le web.config mais je me demandais s'il y avait des propriétés exposées dans l'API.Déterminer par programme le mode d'authentification

Répondre

5

Jetez un oeil à la façon dont il le fait dans /_admin/Authentication.aspx Central Admin:

protected override void OnLoad(EventArgs e) 
{ 
    base.OnLoad(e); 
    string g = base.Request.QueryString["WebAppId"]; 
    this.webApp = (SPWebApplication) SPConfigurationDatabase.Local.GetObject(new Guid(g)); 
    this.zone = (SPUrlZone) Enum.Parse(typeof(SPUrlZone), base.Request.QueryString["Zone"]); 
    this.lb_Zone.Text = SPHttpUtility.HtmlEncode(SPAlternateUrl.GetZoneName(this.zone)); 
    SPIisSettings iisSettings = this.webApp.IisSettings[this.zone]; 

    // CODE ELIDED 

     if (AuthenticationMode.Windows != iisSettings.AuthenticationMode) 
     { 
      if (AuthenticationMode.Forms != iisSettings.AuthenticationMode) 
      { 
       // CODE ELIDED 
      } 
      else 
      { 
       this.rdo_authForms.Checked = true; 
      } 

      // CODE ELIDED 
     } 
} 

La partie qui vous intéresse est l'endroit où il utilise iisSettings.AuthenticationMode pour déterminer si elle est ou non Forms Auth . L'astuce consiste donc à obtenir correctement une référence à SPIisSettings qui est pertinente pour votre webapp et votre zone. Arriver à ce point est où tout le travail doit être fait.

Vous devez paramétrer les parties de ce code afin que les informations pour identifier et obtenir des références à la WebApp et la zone sont transmis.

Voir où il attribue his.rdo_authForms.Checked? C'est comme ça que vous savez si vous utilisez des formulaires auth.

En outre, cela signifie que vous avez besoin de savoir quelle zone de l'application Web que vous êtes à la recherche pour voir si l'authentification par formulaire est activée

3

En utilisant la réponse de Jon Schoning, je suis venu avec le code suivant pour déterminer si la le mode d'authentification actuel est des formulaires:

if (SPContext.Current.Site.WebApplication.IisSettings[SPContext.Current.Site.Zone].AuthenticationMode == System.Web.Configuration.AuthenticationMode.Forms) { ... } 
Questions connexes