2009-06-26 12 views
1

Wir haben eine WSS 3.0-Site, die Forms Based Authentication (FBA) verwendet. Wir möchten die Seite so einrichten, dass bestimmte Benutzer automatisch angemeldet werden können, anstatt den Anmeldebildschirm zu erhalten, und ich bin mir nicht sicher, wie das am besten funktioniert.Automatische Anmeldung in und aus der FBA-SharePoint-Website

Eigentlich, basierend auf this article, habe ich bereits ein HTTP-Modul erstellt, das die Anmeldung übernimmt. Genauer gesagt habe ich eine alternative Login-Seite erstellt, und wenn diese Seite getroffen wird, meldet sie sich als der gewünschte Benutzer. Aber es hält den Benutzer angemeldet, nachdem ich den Browser geschlossen habe. Das heißt, ich starte den Browser, gehe zur alternativen Anmeldeseite, mein HTTP-Modul-Code wird ausgelöst und meldet mich als der gewünschte Benutzer an, dann schließe ich den Browser ab. Wenn ich dann versuche, zur Seite zu gehen, wird die Standard-Login-Seite der Site übersprungen, weil ich immer noch als früherer Benutzer bei der Site angemeldet bin.

Ich denke, meine Frage kommt auf, wie kann ich sicherstellen, dass ich mich abmelden? Gibt es eine Möglichkeit, dies mit HTTP-Modulen/Handlern zu tun, oder möchte ich etwas in global.asax tun?

+0

Wie bestimmen Sie, wann diese Seite anstelle der Standard-Login-Seite zu schlagen? – Rob

+0

Wir planen, Leuten zu sagen, dass die URL für die Seite die alternative Anmeldeseite ist. Diejenigen, die Bescheid wissen, werden wissen, dass es andere Möglichkeiten gibt, auf die Seite zu gelangen. Ich nehme an, wir könnten auch die SharePoint web.config ändern, um die alternative Seite für die Anmeldeseite zu verwenden. – LunaCrescens

Antwort

0

Dumm ich. Ich hatte den Cookie-Parameter meines FormsAuthentication.RedirectFromLoginPage-Befehls auf True gesetzt. Das bedeutet, dass das Authentifizierungs-Cookie für 50 Jahre beibehalten wird. Was ich wollte, war, den Cookie zu entfernen, wenn der Browser geschlossen wurde. Das ist einfach, wenn der Cookie-Parameter auf False gesetzt ist. Hier ist mein Code, wenn jemand interessiert ist ...

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 
Verwandte Themen