Dodane przez yosz
Od dłuższego czasu jestem związany z projektem Sooda. Jest to rozwiązanie OR/M napisanym w .NET bardzo ułatwiające życie a jednocześnie, moim zdaniem łatwiejsze w użyciu niż inne tego typu rozwiązania np NHibernate. Napisałem dwa providery (Role i Membership) w Soodzie, do użycia na stronach ASP.NET.
Sooda czyli Simple Object-Oriented Data Access stworzony przez Jarka Kowalskiego (aktualnie pracownika Microsoftu) jest naprawdę doskonałym narzędziem. Ponieważ do tej pory używałem Soody w połączeniu z rozwiązaniami opracowanymi w mojej firmie, nie miałem okazji zobaczyć jak Sooda może współpracować z np. ASP.NET'em. Od jakiegoś czasu pracuję nad małą aplikacją właśnie w ASP.NET. Przy tworzeniu prostej autoryzacji zostałem 'zmuszony' do skorzystania z SqlMembership- i SqlRoleProvider'a. Ponieważ całą aplikację chciałem oprzeć na Soodzie (np gdyby zaszła potrzeba przeniesienia aplikacji np na MySQL itp) postanowiłem napisać własne providery wykorzystujące Soodę (jestem wręcz alergicznie nastawiony na procedury składowane itp)
Korzystanie ze standardowych providerów ASP.NET dla MSSQL ma jedną główną wadę: jesteśmy uzależnieni od struktury bazy, którą wymyślił dla nas MS. Zatem przystosowanie istniejącej już struktury bazy, aby była zgodna z SqlProvider'ami może okazać się nie lada wyczynem. SoodaProviders mogą posłużyć do w miarę szybkiego przystosowania aplikacji - wystarczy wyedytować plik mapujący klasy na tabele w bazie danych, przebuildować projekt i voila.
Jak używać SoodaProviderów
Zaczynamy od ściągnięcia dll'ek i dodaniu referencji do projektu (przyjmuję że do projektu dodana też jest najnowsza wersja Soody). Następnie na naszej bazie uruchamiamy skrypt Sooda.Web.Security.Objects.sql (do ściągnięcia poniżej). Tworzy on niezbędne tabele (łącznie z tabelą Keygen wymaganą przez Soodę).
Następnie w pliku web.config w sekcji <system.web> należy dodać poniższy fragment, który umożliwi nam korzystanie z SoodaProviderów.
1 <membership defaultProvider="SoodaMembershipProvider">
2 <providers>
3 <clear />
4 <add applicationName="SoodaTest" name="SoodaMembershipProvider"
5 type="Sooda.Web.Security.SoodaMembershipProvider"
6 passwordFormat="Hashed"
7 />
8 </providers>
9 </membership>
10 <roleManager enabled="true" defaultProvider="SoodaRoleProvider">
11 <providers>
12 <clear />
13 <add applicationName="SoodaTest" name="SoodaRoleProvider"
14 type="Sooda.Web.Security.SoodaRoleProvider" />
15 </providers>
16 </roleManager>
Jeżeli tak jak w tym przykładzie zdecydujemy się na użycie haseł np hashowanych, wówczas konieczne będzie dodanie jeszcze <machineKey> Generator machineKey można znaleźć np tutaj
Konfigurację SoodaMembershipProvider'a możemy uzupełnić o atrybuty:
- maxInvalidPasswordAttempts
- passwordAttemptWindow
- minRequiredNonAlphanumericCharacters
- minRequiredPasswordLength
- passwordStrengthRegularExpression
- enablePasswordReset
- enablePasswordRetrieval
- requiresQuestionAndAnswer
- requiresUniqueEmail
- passwordFormat (Hashed / Encrypted / Clear)
Po tym wszystkim możemy używać takich kontrolek jak Login a w tle wszystko za nas załatwi Sooda.
Oba providery były tworzone na podstawie przykładowych providerów ODBC Role i Membership
Nie są jeszcze dokładnie przetestowane więc błędy z pewnością mogą się pojawiać. Postaram się napisać jakiś dłuższy tutorial o tych providerach jeżeli jest zainteresowanie
DLL (Sooda + Providers Debug): SoodaProviders.zip (655,47 kb)
Skrytp SQLowy: SoodaProvidersSQL.zip (1 002,00 bytes)
Źródła (+Sooda): SoodaProvidersSRC.zip (826,82 kb)
Powiązane wpisy