Автоматический вход и выход из сайта FBA SharePoint - PullRequest
1 голос
/ 26 июня 2009

У нас есть сайт WSS 3.0, использующий проверку подлинности на основе форм (FBA). Мы хотим настроить сайт таким образом, чтобы некоторые пользователи могли войти в систему автоматически, а не получать экран входа в систему, и я не уверен, что это лучший способ сделать это.

На самом деле, основываясь на этой статье , я уже создал HTTP-модуль, который обрабатывает вход в систему. Более конкретно, я создал альтернативную страницу входа, и когда эта страница попадает, она регистрируется в качестве желаемого пользователя. Но он сохраняет пользователь вошел в систему после того, как я закрыл браузер. То есть я запускаю браузер, захожу на страницу альтернативного входа в систему, запускается мой код модуля HTTP и регистрируется как нужный пользователь, затем я закрываю браузер. Когда я пытаюсь зайти на сайт, стандартная страница входа на сайт пропускается, потому что я все еще захожу на сайт как предыдущий пользователь.

Полагаю, мой вопрос сводится к тому, как мне убедиться, что я вышел из системы? Есть ли способ сделать это с модулями / обработчиками HTTP, или я хочу сделать что-то в global.asax?

1 Ответ

0 голосов
/ 26 июня 2009

Глупый я. У меня для параметра cookie моей команды FormsAuthentication.RedirectFromLoginPage установлено значение True. Это означает, что cookie-файл аутентификации будет сохраняться в течение 50 лет. Я хотел, чтобы файл cookie исчез, когда браузер был закрыт. Это легко сделать, если для параметра cookie установлено значение False. Вот мой код, если кому-то интересно ...

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
...