Wstęp
Pisząc jak napisać logowanie do aplikacji w Accessie użyłem klasy clsMD5 w celu wygenerowania skrótu MD5 z hasła, aby nie przechowywać go czystym tekstem w bazie.
Dostaje w tej sprawie dużo pytań odnośnie jak dodać nowego użytkownika, dużo problemów macie z użyciem tej klasy. Oczywiście można użyć jakiegoś online-owego kalkulatora i wstawić wyliczony MD5 do bazy, ale to mało wygodne.
Opis problemu
Problemem w tym konkretnym wypadku jest to, ze tabela przechowuje dane, które są wynikiem jakiejś operacji, którą trzeba wykonać przed wstawieniem.
Nie da się tego zrobić na poziomie tabeli i trzeba użyć do tego formularza. Na upartego można by przerobić klasę clsMD5 na moduł i użyć w zapytaniu SQL, ale to nie jest nam potrzebne.
Rozwiązanie
Dodałem nowy formularz frmLogin, który bazuje na tabeli z loginami. Zmieniłem tylko, żeby pole hasła nie pokazywało zawartości tylko gwiazki jak się to robi standardowo z polami haseł, (właściwość Maska). Dodatkowo zablokowałem to pole do edycji bo i tak nic nie osiągnę przez bezpośrednią modyfikacje.
Najważniejszy jest tu przycisk cmbSetPassword, który umożliwia nam dodanie/zresetowanie hasła, prosty kod:
Dim md5 As clsMD5 Dim strPass As String strPass = InputBox("Podaj hasło dla uzytkownika: " & Me.login, "Hasło") Set md5 = New clsMD5 Me.pass = md5.md5(strPass) Set md5 = Nothing DoCmd.RunCommand acCmdSaveRecord
To wyjaśnienie:
1. Deklaracja zmiennych (linia 1-2)
2. Pytanie o nowe hasło (linia 4)
3. Stworzenie nowej instancji klasy clsMD5 (linia 6)
4. Wstawienie do pola na formularzu przechowującego haslo skrótu MD5 wprowadzonego hasła (linia 8)
5. Posprzątanie (linia 10)
6. Zapisanie rekordu, zeby ktoś przez przypadek nie cofnął zmiany (linia 11)
Podsumowanie
Nie ma nad czym się rozwodzić dotknęliśmy w tym wpisie programowania obiektowego, jak i zapisie danych opartych pośrednio o dane użytkownika, przykła w formacie mdb do pobrania tutaj.
Powiązane wpisy:
Formularz Logowania
0 Comments.