Web user control (ascx)

Kontrolka użytkownika (web user control) jest komponentem, który działa bardzo podobnie do zwykłej strony ASP.NET. Elementy, metody oraz akcje definiuje się zupełnie identycznie. Różnica jest taka, że kontrolki ascx umieszcza się na stronach aspx. Jest to świetny sposób na zgromadzenie w oddzielnym pliku współpracujących ze sobą kontrolek, a co za tym idzie odseparowanie ich zdarzeń od pozostałej logiki. Artykuł ten opisuje, jak w łatwy i szybki sposób zbudować i następnie korzystać z dwóch kontrolek użytkownika: UpDownControl oraz DatePickerControl. Do ich stworzenia wykorzystałem jQuery UI oraz AjaxControlToolkit. Pominąłem opis konfiguracji i deklaracji skryptów z tychże bibliotek.
Continue reading

Profile w ASP.NET

Dawno temu opisałem w jaki sposób zintegrować Membershipa z własną bazą danych (tutaj). W tym artykule chciałbym skupić się na innym, bardzo ciekawym mechanizmie, a mianowicie na profilach.
Profile służą do przechowywania i przywracania ustawień użytkownika odwiedzającego aplikację. Ustawienia, które chcemy przechowywać, konfigurujemy w pliku konfiguracyjnym aplikacji (web.config) w sekcji profile. Kiedy aplikacja startuje oraz mechanizm profili jest włączony, ASP.NET buduje klasę ProfileCommon, która to dziedziczy po ProfileBase. Klasa ta zawiera wszystkie niezbędne mechanizmy do operacji na profilach użytkowników. Przejdźmy do praktyki.
Continue reading

CustomPrincipal cd.

Jakiś czas temu pokazałem w tym artykule sposób rozszerzenia możliwości obiektu zalogowanego użytkownika (Context.User). Problemem tamtego rozwiązania jest to, iż na końcu każdego żądania tworzony jest na nowo obiekt CustomPrincipal, co w finalnym efekcie znacząco wpływa na wydajność aplikacji. Oczywiście jest to zależne od ilości rzeczy implementowanych przez nasz obiekt. W celu naprawy tego niedociągnięcia należy nieznacznie zmodyfikować kod klasy z pliku Global.asax.cs – zapraszam do lektury.
Continue reading

BasePage

Mechanizm dziedziczenia jest ogólnie znany oraz chętnie wykorzystywany w programowaniu obiektowym. Nie wiedzieć czemu w aplikacjach internetowych stosuje się go raczej rzadko. W tym artykule chciałbym zaprezentować jak wykorzystać dziedziczenie w sprytny sposób w aplikacji webowej.
Continue reading

CustomPrincipal

UPDATED: Zachęcam do zapoznania się z kontynuacją tego tematu – CustomPrincipal cd.

Obiekt użytkownika wykonującego żądanie (Context.User) jest powszechnie znany. Dzięki niemu w prosty i szybki sposób sprawdzimy, czy osobnik poruszający się po naszej aplikacji jest zalogowany oraz jaki jest jego login. Dodatkowo, jeśli zrzutujemy ten obiekt na klasę, np. RolePrincipal, to otrzymamy dodatkowe możliwości tego obiektu (wymagana deklaracja roleManagera w web.config). A co jeśli chcielibyśmy, aby ten obiekt zawierał nasze właściwości oraz metody? W tym artykule zaprezentuję co należy wykonać, aby obiekt User implementował naszą zawartość.
Continue reading

Zabezpieczenie pliku web.config

UPDATED: Zachęcam do przeczytania kolejnej części artykułu: Secure config, czyli zabezpieczenie pliku web.config v2.

Jak wiadomo w pliku tym znajdują się informacje konfiguracyjne sterujące pracą aplikacji, np. definicja połączenia z bazą danych lub konfiguracja zewnętrznych serwerów SMTP. Uzyskanie dostępu do tego pliku przez osobę niepowołaną może mieć drastyczne skutki dla aplikacji. Oczywistym faktem staje się zabezpieczenie tych informacji poprzez zaszyfrowanie ich. Służy do tego narzędzie „aspnet_regiis.exe” uruchamiane z konsoli Visual Studio lub lokalizacji '%system%\Microsoft.NET\Framework\v2.0.50727′, która jest zależna od wersji zainstalowanego Frameworka. Oczywiście wszystkie wymagane informacje uzyskamy wpisując w konsoli „aspnet_regiis.exe /?”. Należy również pamiętać, by konsolę uruchomić z prawami administratora. Do szyfrowania potrzebna jest tylko jedna opcja, której składnia przedstawia się następująco:
Continue reading