2009-06-26 7 views
1

Nous avons un site WSS 3.0 qui utilise l'authentification FBA (Forms Based Authentication). Nous voulons configurer le site afin que certains utilisateurs puissent être connectés automatiquement, plutôt que d'avoir l'écran de connexion, et je ne suis pas sûr de la meilleure façon de le faire. En fait, basé sur this article, j'ai déjà créé un module HTTP qui gère la connexion. Plus précisément, j'ai créé une autre page de connexion, et quand cette page est frappée, elle se connecte en tant qu'utilisateur désiré. Mais, il maintient l'utilisateur connecté après que je ferme le navigateur vers le bas. C'est-à-dire que je lance le navigateur, que je me rends à la page de connexion alternative, que le code de mon module HTTP est déclenché et que je me connecte en tant qu'utilisateur désiré, puis je ferme le navigateur. Lorsque j'essaie d'accéder au site, la page de connexion standard du site est ignorée car je suis toujours connecté au site en tant qu'utilisateur précédent.Connexion et déconnexion automatiques du site SharePoint FBA

Je suppose que ma question se résume à comment puis-je m'assurer de me déconnecter? Y at-il un moyen de le faire avec des modules/gestionnaires HTTP, ou est-ce que je veux faire quelque chose dans global.asax?

+0

comment déterminez-vous quand frapper cette page au lieu de la page de connexion standard? – Rob

+0

Nous prévoyons de dire aux gens que l'URL de la page est la page de connexion alternative. Ceux qui sont «au courant» sauront qu'il existe d'autres façons d'accéder à la page. Je suppose que nous pourrions également modifier le web.config de SharePoint pour utiliser la page alternative pour la page de connexion. – LunaCrescens

Répondre

0

Silly moi. J'ai eu le paramètre cookie de ma commande FormsAuthentication.RedirectFromLoginPage définie sur True. Cela signifie que le cookie d'authentification sera conservé pendant 50 ans. Ce que je voulais, c'était que le cookie disparaisse lorsque le navigateur était fermé. C'est facile à faire si le paramètre cookie est défini sur False. Voici mon code si quelqu'un est intéressé ...

Imports System.Web 
Imports System.Web.Security 
Imports System.Collections.Specialized 
Imports System.Security.Principal 
Imports System.Threading 
Imports System.Web.UI 

Public Class AuthModule 
    Implements IHttpModule 

    Public Sub Dispose() Implements System.Web.IHttpModule.Dispose 
    End Sub 

    Public Sub Init(ByVal app As System.Web.HttpApplication) Implements System.Web.IHttpModule.Init 
     AddHandler app.PreRequestHandlerExecute, New EventHandler(AddressOf OnPreRequestHandlerExecute) 
    End Sub 

    Public Sub OnPreRequestHandlerExecute(ByVal sender As Object, _ 
              ByVal e As EventArgs) 

     ' Check to see if the alternate page has been accessed 
     If HttpContext.Current.Request.Url.ToString.ToUpper.EndsWith("AUTOLOGIN.ASPX") Then 
      ' Alternate page has been accessed, so log in using predetermined account 

      ' Retrieve the user name and password 
      Dim userName As String = "user" 
      Dim userPassword As String = "password" 

      ' Build the user id 
      Dim roles As String() = Nothing 
      Dim webIdentity As New GenericIdentity(userName, "Form") 
      Dim principal As New GenericPrincipal(webIdentity, roles) 

      ' Specify the user 
      HttpContext.Current.User = principal 
      Thread.CurrentPrincipal = principal 

      ' Redirect from the login page to the start page 
' Note, this is the line I initially had incorrect. That is, I had the 
' second parameter set to True, which will persist the authentication cookie. 
' Setting the second parameter to False will cause the authentication cookie 
' to go away when the browser is closed. Yeah! 
      FormsAuthentication.RedirectFromLoginPage(HttpContext.Current.User.Identity.Name.ToString, False) 
     End If 

    End Sub 

End Class 
Questions connexes