Formularz Logowania (raz jeszcze…)

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

Leave a Comment

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

WordPress SEO fine-tune by Meta SEO Pack from Poradnik Webmastera
Skip to toolbar