MVC jest wyposażony w ActionFilter Aby uzyskać uwierzytelnianie tożsamości w Asp.NET WebForm, Microsoft oferuje nam trzy sposoby, z których najczęściej stosowanym jest uwierzytelnianie formularzowe, które musi być skonfigurowane z odpowiednimi informacjami. Na przykład następujące informacje konfiguracyjne:
Oznacza to, że nasza strona logowania jest Login.aspx, domyślna strona po pomyślnym zalogowaniu jest Default.aspx, a dane użytkownika korzystają z dwóch metod: weryfikacji i szyfrowania. I najważniejsze jest napisanie metody autoryzacji (autoryzacja poniżej musi być napisana, w przeciwnym razie nie ma sensu używać tylko uwierzytelniania Forms i ustawiać odpowiednie atrybuty), odrzucić wszystkich anonimowych użytkowników i normalnie korzystać tylko z zalogowanymi. Następnie ustawiliśmy przycisk logowania, aby wpisał nazwę użytkownika do ciasteczka (czyli wykonanie FormsAuthentication.SetAuthCookie(name, false); To wszystko. 0 W Asp.Net MVC możemy też używać uwierzytelniania Forms, ale jeśli zrobisz to w WebForm, to nie zadziała. Na przykład konfigurujesz informacje w ten sposób:
Konfigurujesz logowanie w Login.aspx, aby wywołać logowanie w AccountController, gdzie kod logowania:
Po wykonaniu tego procesu okaże się, że Twoje logowanie nie zostanie wykonane. Jaki jest powód? Dlaczego to samo ustawienie nie działa w MVC? Powodem jest to, że mechanizm jest inny, ponieważ tworzysz metodę autoryzacji, która sprawia, że logowanie jest niedostępne. Jak więc to zrobić? W rzeczywistości w Asp.Net MVC mamy lepszy sposób na to wszystko, nie potrzebujemy metody autoryzacji, co oznacza, że nasze informacje konfiguracyjne wyglądają tak:
Nie ma potrzeby określać, że anonimowi użytkownicy nie mogą się logować itp. Oczywiście zauważysz, że samo to nie wystarczy, ale musimy informować system, do których należy się zalogować, aby uzyskać dostęp. Możesz myśleć, o()〈))o Och, to za dużo kłopotu. To nie tak, to bardzo proste, wystarczy oznaczyć [Autoryzować] na Akcji, która wymaga uwierzytelnienia. Na przykład mam dwie strony w folderze głównym: Index i Home, i chcę, aby Indeks był uwierzytelniony do dostępu, ale Home tego nie robi, więc wystarczy nadać Indeksowi tag Akcja [Autoryzuj], czyli:
Pozwala to na dostęp do Index po zalogowaniu, podczas gdy Home nie wymaga logowania. Jeśli musisz autoryzować role, możesz określić tę rolę podczas oznaczania Authorize (np. [Authorize(Role=Administrators)]), ale musisz użyć mechanizmu członkowskiego oferowanego przez Microsoft, ponieważ twoja rola nie może istnieć bez powodu, lecz istnieje w odpowiedniej bazie danych, o czym wspomniałem w innym blogu. Dostosuj ActionFilter Czasem możesz nie spełnić tego rodzaju uwierzytelniania albo jeśli czujesz, że nie jesteś wystarczająco elastyczny, to nie ma znaczenia, Asp.Net MVC pozwala dostosować ActionFilter. Na przykład teraz dostosowuję uwierzytelnianie:
Jeśli wymagane jest zarządzanie użytkownikami, zdefiniuję filtry związane z rolą:
W rzeczywistości zauważysz, że powyższe dwa atrybuty zostały faktycznie rozwiązane przez wbudowany system autoryzowany w MVC, a tutaj głównie mówimy, że możesz go rozszerzyć, jeśli zajdzie taka potrzeba. No to wszystko na dziś! Kod źródłowy do pobrania: FormFormsAuthenticationMvc
|