.NET-Software-Entwicklung - DotNetNuke - Business-Develoment
# Monday, June 27, 2005

Benutzerverwaltung / Anmeldedaten speichern

Vor einiger Zeit habe ich bei DotNetNuke einen Fehler in der automatischen Anmeldung festgestellt.

Die User können über den Schalter "Anmeldedaten merken" ein automatisches Login durchführen lassen. Sollte ein Benutzerkonto nun gespert sein (z.B. durch falsche Eingabe von Benutzername / Passwort), dann wird beim LogIn dieses ignoriert und der User kann sich weiterhin automatisch anmelden.

Um das zu umgehen habe ich den Core-Code ein wenig modifiziert (ja ja .. nicht schön und gefällt mir auch selber nicht, war jetzt aber erst mal eine quick-and-dirty Lösung).

In der Klasse "compontens\Users\UserController.vb" die Funktion "GetCurrentUserInfo" modifizieren:

Dim objUser As UserInfo = CType(HttpContext.Current.Items("UserInfo"), UserInfo)
If Not ObjUser Is Nothing Then
Return objUser
Else
Return New UserInfo
End If

Ersetzen durch:

Dim objUser As UserInfo = CType(HttpContext.Current.Items("UserInfo"), UserInfo)
If Not ObjUser Is Nothing Then
If objUser.Membership.LockedOut Then
Dim _portalSettings As PortalSettings = PortalController.GetCurrentPortalSettings

FormsAuthentication.SignOut()

HttpContext.Current.Response.Cookies("portalaliasid").Value = Nothing
HttpContext.Current.Response.Cookies("portalaliasid").Path = "/"
HttpContext.Current.Response.Cookies("portalaliasid").Expires = DateTime.Now.AddYears(-30)

HttpContext.Current.Response.Cookies("portalroles").Value = Nothing
HttpContext.Current.Response.Cookies("portalroles").Path = "/"
HttpContext.Current.Response.Cookies("portalroles").Expires = DateTime.Now.AddYears(-30)

' Redirect browser back to portal
Dim strURL As String = ""
If _portalSettings.HomeTabId <> -1 Then
strURL = NavigateURL(_portalSettings.HomeTabId)
Else
strURL = GetPortalDomainName(_portalSettings.PortalAlias.HTTPAlias, HttpContext.Current.Request)
End If
HttpContext.Current.Response.Redirect(strURL, True)
Else
Return objUser
End If

Else
Return New UserInfo
End If

Dieser Weg ist noch keine wirklich sauber Lösung aber zumindest erst mal ein brauchbarer Bugfix. Wenn ich etwas mehr Luft haben, versuche ich eine andere Lösung zu finden.


Monday, June 27, 2005 3:05:17 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
DotNetNuke