Ostatnio opublikowałem następujące pytanie na SO: /programming/7197337/using-asp-net-membership-provider-with-an-existing-user-database
Jak można zauważyć, skończyłem odpowiadając na moje pytanie, stwierdzając, że wyglądało to na napisanie / wdrożenie „niestandardowego dostawcy członkostwa”.
Dosłownie kilka minut później natknęłam się na to pytanie: /programming/7222306/simple-login-attempt-counter-using-mvc-3-and-ajax/7222407#7222407
Próbuję odpowiedzieć i uzyskać komentarz, że dostawca członkostwa w .Net jest „straszny na wielu poziomach”. Przyznaję, że po raz pierwszy korzystam z dostawcy członkostwa, ale z pewnością wyglądało to dla mnie elegancko.
Nie widziałem niczego, co uzasadniałoby twierdzenie „okropne”, więc zanim wdrożyłem coś „okropnego”, miałem nadzieję uzyskać informację zwrotną od społeczności.
źródło
Odpowiedzi:
Nie jestem więc pewien, czy „straszne” jest tutaj najlepszym słowem. Ma to jednak ograniczenia i gdy tylko Twoje potrzeby nie pasują do tego, w jaki sposób zaprojektowano dostawcę członkostwa, dostajesz dużo kodu kleju. Jeśli możesz użyć dostawcy członkostwa od razu po wyjęciu z pudełka, powiedziałbym, że idź. Jak tylko zaczniesz pisać niestandardowy, i tak pytam o członkostwo.
Z mojego doświadczenia wynika, że dostawca członkostwa kupuje ci ...
Jestem pewien, że brakuje mi czegoś jeszcze, ale myślę, że to są te duże. Teraz, gdy potrzebujesz niestandardowego zarządzania hasłem, uwierzytelniania dwuskładnikowego, do pracy z istniejącym modelem danych lub całego szeregu innych rzeczy, które zaczynasz tracić. Kod, który został już napisany dla Ciebie z podaniem członkostwa, powinien zająć kilka dni, aby go zduplikować, jeśli wiesz, co robisz.
źródło
Nie robi tego, co chcesz. Na pierwszy rzut oka może się okazać, że zaspokoi wszystkie Twoje potrzeby i niektóre, ale pojawia się nowy wymóg. Teraz „naprawdę” musisz nauczyć się, jak to działa. Korzyści z posiadania tego wszystkiego wstępnie zmalały, ponieważ byłeś w tym fałszywym poczuciu bezpieczeństwa.
@Travis wspomniano przy użyciu istniejącego modelu danych, ale wybór bazy danych może być również ograniczeniem: Oracle?
Nie wiem, czy działa z zewnętrznymi systemami weryfikacji, takimi jak Facebook czy Google.
źródło
Nie są tak elastyczni, jak wiele osób myśli po szybkim przeczytaniu dokumentów, ale mają swoje miejsce.
Jeśli nie potrzebujesz kontroli nad tokenami użytkownika i potrzebujesz jedynie zbudować niestandardowe / rozszerzone dane użytkownika lub zestaw członkostwa lub musisz pobrać te dane z istniejącego / innego źródła, mają swoje miejsce.
Jeśli chcesz zmienić coś więcej, często lepiej jest wymienić moduł httpmodu, który obsługuje jednego z dostawców uwierzytelniania, wtedy masz pełną kontrolę. Większość osób, z którymi się spotkałem, przełamuje problemy z dostawcami, którzy dokonali złego wyboru dla swojej sytuacji na tym poziomie.
Tak czy inaczej, otrzymasz poprawnie wypełniony plik context.user, który pozwala kontynuować korzystanie z większości funkcji użytkownika opartych na asp.net.
źródło
To pytanie jest stare, ale dostaję odznaki za jego popularność, więc uważam, że warto udzielić zaktualizowanej odpowiedzi.
„Prosty” dostawca członkostwa Microsoftu w końcu trafił w moje skromne zdanie. Jeśli piszesz coś nowego lub nawet dołączasz do starszej bazy danych z nową aplikacją. Skorzystaj z prostego dostawcy członkostwa. DROGA ŁATWIEJSZY i CZYSTSZY do wdrożenia. Zainstaluj kilka tabel i wskaż dostawcę na swoją listę użytkowników i gotowe.
Ten link pozwoli Ci zacząć lub po prostu google: http://www.mattjcowan.com/funcoding/2012/11/10/simplemembershipprovider-in-mvc4-for-mysql-oracle-and-more-with-llblgen/
źródło