Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości część 3
przejdziemy teraz do zaprojektowania strony przegladaj_dzialami.aspx na której użytkownicy będą przeglądać wiadomości wg działów umieszczamy kontrolkę źródła danych oraz konfigurujemy
nasza kontrolka stanowić będzie źródło danych dla listy rozwijalnej w której prezentować będziemy działy, wybieramy zatem tabelę dzial oraz narzędziem ORDER BY sortujemy wg nazw działów następnie Next oraz Finish
umieszczamy kontrolkę DropDownList oraz wybieramy i konfigurujemy źródło danych Choose Data Source
zaznaczamy opcję Enable AutoPostBack
wówczas w przeglądarce jak poniżej strona ma działać w taki sposób że po wybraniu z listy działu będą prezentowane wiadomości do niego wysłane
umieszczamy kolejną kontrolkę SqlDataSource oraz konfigurujemy
wybieramy tabelę wiadomosc oraz pola jak poniżej kolumna Id_dzial zawiera wartości kluczy obcych wskazujących na dział do którego wysłana jest wiadomość, prezentuje ona zatem cyfry, będzie nam ona jednak potrzebna do sformułowania warunku który będzie wybierał tylko określone wiadomości
za pomocą przycisku WHERE skonstruujemy ten warunek
zatem kolumna Id_dzial ma być równa kontrolce DropDownList1
dodajemy ten warunek
i zatwierdzamy OK następnie Next oraz Finish
umieszczamy kontrolkę GridView wskazujemy jej źródło danych
formatujemy wygląd
testujemy w przeglądarce
pewien problem występuje gdy wybierzemy dział do którego nie wysłano żadnej wiadomości, np.
Użytkownik nie jest pewien czy nie ma wiadomości czy strona działa błędnie kontrolka GridView ma tę cechę że jeżeli nie prezentuje danych nie jest widoczna we właściwościach tej kontrolki wprowadzimy zatem tekst jaki ma być wyświetlany w takim przypadku
wówczas
ostatnia kwestia to wyświetlanie kolumny Id_dzial, nie możemy jej usunąć bo w oparciu o nią jest skonstruowany warunek wybierania wierszy ale możemy ją ukryć
kolejna strona to zarzadzaj_wiadomosciami.aspx z poziomu tej strony użytkownik będzie miał możliwość edytowania, usuwania oraz dodawania wiadomości umieszczamy źródło danych oraz konfigurujemy je
wybieramy tabelę wiadomosc wszystkie jej kolumny, oraz w opcjach dodatkowych wymuszamy generowanie zapytań INSERT UPDATE oraz DELETE następnie Next oraz Finish
następnie umieszczamy kontrolkę DetailsView oraz ją konfigurujemy jej źródło
konfigurujemy wygląd oraz zaznaczamy opcje Paging, Inserting, Editing oraz Deleting
testujemy działanie w przeglądarce
możemy zmienić tekst przycisków na język polski
na bazie elementów z poprzedniej strony tj. zarzadzaj_wiadomosciami.aspx w folderze administracja proszę utworzyć nową stronę zarzadzaj_dzialami.aspx proszę zmodyfikować mapę witryny w taki sposób aby strona ta była podstroną strony wyślij wiadomość na stronie tej proszę zapewnić możliwość dodawania usuwania oraz edytowania działów widok menu
widok zaprojektowanej strony
nasza aplikacja posiada pełną funkcjonalność odnośnie operacji na bazie danych przystąpimy teraz do zastosowania usługi logowania czyli zabezpieczenia dostępu użytkownikom anonimowym-nielogowalnym do stron umieszczonych w folderze administracja z głównego poziomu dodajemy nową stronę o nazwie Login.aspx jej nazwa jest bardzo istotna
na stronie tej z grupy kontrolek Logowanie umieszczamy kontrolkę Login oraz konfigurujemy jej wygląd
nasza strona w przeglądarce wygląda jak poniżej
tekst w kontrolce możemy oczywiście dowolnie zmodyfikować proszę zatem we właściwościach kontrolki Login to wykonać
wówczas w przeglądarce po wybraniu przycisku Zaloguj
przejdziemy teraz do administracji zarządzania dostępem do aplikacji
panel administracji uruchomi się jako strona w przeglądarce wybieramy Security
musimy zdefiniować typ uwierzytelniania
wybieramy opcję jak poniżej
następnie Zrobione
włączymy dostęp do poszczególnych stron przy pomocy ról (dostępu)
utworzymy teraz rolę dostępu (w naszym przypadku będzie jedna, może ich być jednak wiele)
wprowadzamy nazwę roli oraz dodajemy ją
rola zostanie dodana następnie powracamy do strony zarządzania
utworzymy teraz użytkownika
zaznaczamy w jakiej roli występować będzie nasz użytkownik opcja, że użytkownik jest aktywnym użytkownikiem powinna być zaznaczona domyślnie
wprowadzamy dane użytkownika hasło wymaga znaków nie-alfanumerycznych oraz jego minimalna długość to 7 znaków wprowadzone poniżej hasło to: administrator#11
użytkownik został pomyślnie utworzony
powracamy do strony zarządzania
zdefiniujemy teraz dostęp do stron naszej aplikacji
wybieramy folder administracja użytkownicy anonimowi (nielogowalni) odmów dostępu Deny i potwierdzamy utworzenie reguły przyciskiem OK
rola została utworzona
zamykamy stronę tworzenia autoryzacji
podstawowe pytanie: gdzie zostały zapisane dane utworzonego użytkownika? Proszę odświeżyć zawartość folderu: App_Data
została utworzona nowa baza danych na potrzeby usługi uwierzytelniania o nazwie ASPNETDB.MDF
sprawdzimy w Eksploratorze serwera jaka jest struktura tabel utworzonej bazy
pokażmy dane tabeli aspnet_users
tutaj zapisane są dane użytkowników, przechowywane są także informacje odnośnie ostatniego logowania
szczegółowe dane oraz hasło zapisane jest w tabeli aspnet_membership hasło oczywiście nie jest przechowywane w formie jawnej
proszę odświeżyć zawartość folderu administracja
znajduje się w nim plik web.config w pliku tym są przechowywane reguły dostępu do zawartości folderu
sprawdźmy teraz jak działa nasza aplikacja w przeglądarce strona główna
strona wyślij wiadomość
w przypadku tych dwóch stron dostęp jest możliwy natomiast jeżeli wybierzemy którąś z podstron strony wyślij wiadomość zostaniemy przeniesieni na stronę Login.aspx logujemy się zatem
po zalogowaniu mamy dostęp do wszystkich pozostałych stron
nasza aplikacja posiada jednak pewne niedociągnięcia tzn. Po zalogowaniu nie mamy możliwości wylogowania się (pozostaje jedynie zamknięcie strony w przeglądarce i ponowne uruchomienie zatem na stronie Master.page z grupy kontrolek Login umieszczamy kontrolkę LoginStatus
zmieniamy tekst jak poniżej
możemy również zdefiniować do jakiej strony mamy zostać przeniesieni po akcji wylogowania
musimy również ustawić akcję przy wylogowaniu jak poniżej
sprawdzamy działanie w przeglądarce
możemy również wyświetlić nazwę użytkownika który jest zalogowany wprowadzamy tekst jak poniżej oraz umieszczamy kontrolkę LoginName
wówczas w przeglądarce
ostatnia kwestia to zasadność pokazywania menu ze stronami zabezpieczonych dostępem użytkownikom anonimowym
naszym celem jest zatem uzyskanie takiej sytuacji, że jeżeli nie jest zalogowany żaden użytkownik podmenu nie jest wyświetlane, po zalogowaniu pojawia się w tym celu musimy zmodyfikować plik web.config aplikacji
otwieramy go zatem
wklejamy zawartość dołączonego do materiałów pliku webconfig.txt w miejscu wskazanym poniżej po modyfikacji
sprawdzamy działanie w przeglądarce przed zalogowaniem po zalogowaniu
zagadnienia dodatkowe proszę utworzyć nową stronę zarzadzaj_uzytkownikami.aspx w folderze administracja proszę zmodyfikować plik Web.sitemap tak aby strona ta była podstroną strony wyślij wiadomość na stronie tej proszę po eksperymentować z pozostałymi kontrolkami z grupy Login np.