Kiedy tworzę witrynę, która wymaga rejestracji i logowania, dla czegoś szybkiego bez wielu wymagań użyję członkostwa z atrybutami [Authorize] i cokolwiek. Działa dobrze w tym, co robi. Ale teraz chcę czegoś więcej. Zasadniczo Zajmuję się tworzeniem witryny przy użyciu ASP.NET MVC EF CodeFirst i chcę utworzyć podmiot użytkownika do trwałego do DB, który posiada znacznie więcej informacji. Takie informacje wymagane podczas rejestracji miałyby dodatkowe właściwości, takie jak FirstName, LastName, Gender, Country, itp.. Niestandardowe członkostwo VS. Niestandardowe logowanie/rejestracja: uwierzytelnianie/autoryzacja
Próbowałem już przeczytać nad implementacją niestandardowego MembershipProvider i MembershipUser, etc ... Dotarłem do tej pory ale po prostu nie spotyka się tak, jak chcę w końcu. Teraz, gdy rozwijam witrynę w PHP lub, innym razem, w ASP.NET, po prostu utworzę swoją klasę User i podam mu wszystkie właściwości potrzebne do strony rejestracji i po prostu wepchnę ją do DB. Następnie, kiedy się zaloguję, pobieram nazwę użytkownika lub adres e-mail i hasło i po prostu tworzę zmienną sesji wskazującą, czy użytkownik jest autoryzowany, czy nie.
Czy to jest w porządku? Po prostu nie rozumiem, dlaczego to całe członkostwo jest o wiele bardziej skomplikowane, niż wydaje się być, więc wydaje mi się, że brakuje mi sensu. Ponadto zauważam w aplikacji internetowej ASP.NET MVC, że kiedy jesteś uwierzytelnionego to pisze się tej linii ....
FormsAuthentication.SetAuthCookie(model.UserName, createPersistentCookie: false);
Jaka jest różnica między tym a ...
Session["username"] = model.UserName
Cóż, myślę, że mam zamiar zrobić jeszcze więcej czytania ... Wydaje się, że za każdym razem, gdy myślę, że zdecydowałem się na coś, sugeruje się coś innego i nigdy nie wiem, w którą stronę pójść, aby zapewnić optymalną wydajność w dłuższej perspektywie ... Dzięki za odpowiedź. –
Jedna rzecz, o której zapomniałem wspomnieć to, że użycie FormsAuthentication i ustawienie obecnego IIdentity i IPrincipal pozwoli ci uzyskać dostęp do "Bieżącego użytkownika" na każde żądanie (podobne do twojego komentarza php). Na przykład, aby uzyskać aktualną "nazwę użytkownika", wystarczy użyć User.Identity.Name w kontrolerze. – Jesse