Gemeinsam zu mehr Effizienz in der Anwendungserstellung
K (hat „Konzept:Login-Prüfung“ nach „Login-Prüfung“ verschoben und dabei eine Weiterleitung überschrieben: zurück verschieben) |
K (→Login-Steuerung) |
||
(Der Versionsvergleich bezieht 11 dazwischenliegende Versionen mit ein.) | |||
Zeile 85: | Zeile 85: | ||
End Sub | End Sub | ||
</source> | </source> | ||
+ | |||
+ | |||
+ | === Beispiel === | ||
+ | |||
+ | ==== Login-Steuerung ==== | ||
+ | Download: [http://access-codelib.net/download/samples/LoginSteuerung.zip LoginSteuerung.zip (64kB)] | ||
+ | |||
+ | Dieses Beispiel ist eine Weiterentwicklung eines Beispiels aus einer [http://www.ms-office-forum.net/forum/showthread.php?t=264252 Diskussion im MS-Office-Forum]. | ||
+ | |||
+ | Im Modul <code>modApplication</code> kann zwischen zwei Varianten zur Passwort-Prüfung ausgewählt werden: | ||
+ | * Prüfung des Windows-Benutzers mittels Win-API | ||
+ | * Prüfung über eine Tabelle mit einem md5-verschlüsselten Passwort (Test-Account: Name = Tester, Passwort = xxx) | ||
{{Hierarchy footer}} | {{Hierarchy footer}} |
Programmier-Konzepte |
|
Der unten angeführte Code zeigt nur ein Prinzip und stellt keine fertige Lösung dar.
Inhaltsverzeichnis |
Code-Prinzip:
' Ereignis für Weitergabe des Login-Status Public Event LoginChanged(ByVal UserLoggedOn as Boolean, ByVal UserName as String) ' LoggedOn ... True = User ist angemeldet, Fals = User hat sich abgemeldet ' Login-Methode Public Function Login(ByVal NewUsername As String, ByVal Password As String) as Boolean ... Login prüfen usw. If LoginWarErfolgreich then RaiseEvent LoginChanged(True, NewUsername) End If ' Diese Prozedur wird später vom Login-Formular verwendet End Function Public Sub Logout() ... Intern aufräumen RaiseEvent LoginChanged(False, Me.Username) End Sub 'Hilfsprozedur um bei Bedarf den Anmeldestatus abzufragen: Public Property Get IsLoggedIn() as Boolean ... End Property ' .. und auch gleich noch den aktuell angemeldeten Usernamen: Public Property Get UserName() As String ... End Property
Da man von dieser Klasse vermutlich nur eine Instanz benötigt, könnte man diese Instanz über ein allgemeines Modul erstellen.
Private m_UserLogon As UserLogon Public Property Get CurrentUserLogon() As UserLogon If m_UserLogon Is Nothing then set m_UserLogon = New UserLogon End If Set CurrentUserLogon = m_UserLogon End Property
In einem Formular, das nur für eingeloggte User volle Funktionalität ermöglichen soll, wird die Klasse UserLogon folgendermaßen verwendet:
Private WithEvents m_CurrentUserLogon As UserLogon 'm_CurrentUserLogon einstellen: Private Sub Form_Load() Set m_CurrentUserLogon = CurrentUserLogon Call aktiviereSonderBereiche(m_CurrentUserLogon.IsLoggedIn) End Sub 'Auf Ereignis bei Anmeldungsänderung reagieren Private Sub m_CurrentUserLogon_LoginChanged(ByVal UserLoggedOn as Boolean, ByVal UserName as String) call aktiviereSonderBereiche(UserLoggedOn) End Sub 'Hilfsfunktion zum Einstellen der Steuerelemente: Private Sub aktiviereSonderBereiche(ByVal bAktivieren as Boolean) 'z. B.: Me.cmdDeleteRecordset.Enabled = bAktivieren ... End Sub
Download: LoginSteuerung.zip (64kB)
Dieses Beispiel ist eine Weiterentwicklung eines Beispiels aus einer Diskussion im MS-Office-Forum.
Im Modul modApplication
kann zwischen zwei Varianten zur Passwort-Prüfung ausgewählt werden:
Benutzerverwaltung und Login | Zugriffsschutz und Lizenzprüfung