Do tej pory używałem niestandardowego dostawcy członkostwa do uwierzytelniania we wszystkich moich aplikacjach internetowych. Zaraz zacznę rozwijać moją pierwszą stronę za pomocą MVC. Zastanawiam się, czy powinienem użyć wbudowanego dostawcy członkostwa dostarczanego z ASP .NET MVC, czy też powinienem stworzyć swój własny. Moja strona musi zintegrować się z openidem, Facebookiem, Google itp. W celu uwierzytelnienia i openauth w celu uzyskania dostępu do interfejsu API. Zastanawiam się, jak łatwo byłoby użyć wbudowanego do moich potrzeb.Czy powinienem używać wbudowanego dostawcy członkostwa dla aplikacji ASP.NET MVC?
Odpowiedz
Osobiście Nienawidzę pomocą ASP.NET Membership provider
, które są dostępne w ramach podstawowej ... gdy utrzymuje się z serwerem bazy danych SQL. Wszystkie tabele i widoki są takim przesadą dla pojedynczej witryny. Dla firmy hostingowej? .. może ... ale dla wszystkich witryn korporacyjnych, które zrobiłem .. to był taki żenujący przeskok i kłopot. Jeśli chodzi o rzeczywisty interfejs dostawcy, itp. ... jest bardzo dobry .. ale nadal bardzo hardcore, itp. Przesadą dla prostych-średnich stron, IMO.
Osobiście użyłbym prostego niestandardowego kodu do obsługi utrzymywania członkostwa w większości podstawowych witryn.
Następnie przechodzi do drugiego pytania: OpenId. Użyj Andrew Arnotta w wersji DotNetOpenAuth .NET framework -> to zaśmiecający kopnięcie poważnego tyłka (tm). Używanie tego jest niezależne od JAK zapisujesz dane członkowskie użytkownika do repozytorium. To znaczy. jeśli posuwasz się naprzód i korzystasz z dostawcy Sql Server + ASP.NET Membership, nadal możesz (i powinieneś) używać DotNetOpenAuth. Jeśli masz prosty, niestandardowy sposób zapisywania danych użytkownika w bazie danych (co robię), nadal możesz korzystać z DotNetOpenAuth - te dwie są niezależne od siebie.
Tak więc, IMO, nie używaj zbyt skomplikowanych elementów programu ASP.NET Membership + Sql Server, ale prostą tabelę lub dwie, aby zapisać własne dane użytkownika. Następnie MUSISZ użyć DotNetOpenAuth do wszelkich rzeczy OpenId (StackOverflow używa DotNetOpenAuth do obsługi swoich loginów OpenId).
Powodzenia :)
(jestem pewien, że moi opnions od dostawcy ASP.NET Membership + SQL Server, aby utrzymywać te informacje spowodują kilka osób do frajerem-wściekłości, tutaj).
+1 - Bardzo podoba mi się twoja odpowiedź, ponieważ pokazuje użycie właściwych narzędzi do pracy. Widziałem wiele projektów, w których zawierają zbyt skomplikowane dodatki, które są całkowicie przesadzone z tego, czego potrzebuje aplikacja. Prawie we wszystkich przypadkach, w których doświadczyłem tego, zazwyczaj okazuje się, że twórca chciał, aby nowa zabawka grała ... bez myślenia o tym, czy jest to właściwe dla danej pracy. – Dal
Edytuj, proszę (nie mogę). To "segue", a nie "segway" ... chyba że mówisz o osobistym urządzeniu transportowym, które na zawsze zmieni sposób, w jaki dojeżdżamy do pracy w roku 2000. – xanadont
Pozdrawiam @xanadont - po aktualizacji. –
Jeśli musisz zapytać, nie powinieneś pisać własnego operatora. Wykonanie zabezpieczenia jest bardzo trudne: naprawdę trudne. Błędne wykonanie jest niezwykle łatwe.
Dobra wiadomość jest taka, że to, czego się chce, jest niezwykle powszechne i istnieją sprawdzone, gotowe do użycia narzędzia, które już to robią. Przykładem jest Janrain. Są też inne. Użyj istniejącego, sprawdzonego narzędzia, gdy tylko jest to możliwe.
Istnieje również: http://code.google.com/p/dotnetopenid/ – jfar
Oto opcja, z której korzystam z powodzeniem.
Zasadniczo masz jednego użytkownika, który może być uwierzytelniony na wiele sposobów.
Korzystanie z wbudowanego dostawcy, który można oczywiście wyłączyć w dowolnym momencie, nie wyklucza uwierzytelniania tego użytkownika na wiele sposobów.
Gdy użytkownik dokonuje uwierzytelnienia za pomocą OpenID, Facebook itp., Dopasuj to logowanie do tabeli, która jest zgodna z określoną metodą logowania i tożsamością z tożsamością Forms, i po prostu ustaw użytkownika jako zalogowany z jego kanoniczną nazwą użytkownika.
Jeśli nowy użytkownik uwierzytelni się w Twojej witrynie i nie ma konta, po prostu automatycznie utwórz konto u dostawcy. Ustaw hasło dla losowych śmieci, ponieważ nigdy ich nie użyją. Pozwól im nadal kojarzyć z nią wiele typów logowania.
Jeśli użytkownik chce mieć również bezpośrednie logowanie, użyj standardowych mechanizmów resetowania haseł dostawcy członkostwa i podaj je.
Krótka historia: teraz używaj wbudowanego mechanizmu. Nie powstrzymuje cię to od robienia tego, co chcesz.
Zobacz, co się dzieje z NerdDinner. Niedawno (6 miesięcy temu) zostały zintegrowane z OpenID, a Google, Yahoo jako dostawcy oferowani. Wciąż zezwalają na wszystkie swoje "natywne" loginy. Oto przykład witryny umożliwiającej uwierzytelnianie użytkownika na różne sposoby.
Jeśli możesz odzwierciedlić niektóre z ich funkcjonalności, możesz przetasować na Facebooku, OpenAuth itp. Dużą korzyścią jest to, że jest już zaimplementowana w ASP.NET MVC, i po prostu musisz pożyczyć niektóre z tego wdrożenia.
Awesome. Samouczek NerdDinner jest jednym z najlepszych pisemnych samouczków w historii. Czy mają samouczek dla mechanizmu logowania? – Prabhu
@Prabhu: Nie widziałem samouczka ani instrukcji logowania, ale podejrzewam, że możesz skontaktować się z Jonem Galloway. Prawdopodobnie będzie mógł wskazać ci jakieś/jakiekolwiek zasoby dotyczące zapoznania się z systemem logowania, który mają. http://twitter.com/jongalloway –
Niedawno wprowadzony SimpleMembershipProvider rozwiązuje wiele problemów ze starszym członkostwem asp.net. Mianowicie łatwość użycia i kontrola nad schematem stołu użytkownika. To powinien być punkt wyjścia dla każdej nowej aplikacji (stan na 11/2012).
Zobacz poniższy link dla primera na SimpleMembershipProvider wraz z przyzwoitą historią na członkinie asp.net.
- 1. Czy można użyć dostawcy członkostwa asp.net w aplikacji systemu Windows?
- 2. Wstrzyknięcia zależne i dostawcy członkostwa ASP.Net
- 3. oAuth Dostawca członkostwa ASP.NET
- 4. Prawidłowe znaki użytkownika przy użyciu dostawcy SQL dla członkostwa ASP.NET
- 5. Czy dostępny jest kod źródłowy dla dostawcy uniwersalnego członkostwa (System.Web.Providers)?
- 6. Facebook Connect Integracja z witryną za pomocą dostawcy członkostwa ASP.NET
- 7. ASP.NET MVC 4 Web API Authentication z dostawcą członkostwa
- 8. Testowanie dostawca członkostwa bez ASP.NET
- 9. Dostawca członkostwa ASP.NET z EF
- 10. Zastąpienie Asp.net Ustawienia członkostwa w czasie wykonywania (asp.net mvc)
- 11. ASP.Net MVC klienta uwierzytelniania
- 12. Alternatywy członkostwa ASP.NET
- 13. Jak powinienem obsługiwać autoryzację/uwierzytelnianie w mojej aplikacji Asp.net MVC?
- 14. Usunięcie członkostwa ASPAL i dostawcy ról
- 15. Dlaczego powinienem używać WCF z MVC?
- 16. .NET 4.5 Nazwy tabeli uniwersalnego dostawcy członkostwa
- 17. Dostawcy członkostwa i zgodność z HIPAA
- 18. Jak dodać dodatkowe pole za pomocą dostawcy członkostwa ASP.Net?
- 19. Jak wyłączyć konto z dostawcą członkostwa ASP.NET?
- 20. Najlepsze API OpenId dla aplikacji ASP.NET MVC
- 21. Czy powinienem używać asynchronicznego "do końca" dla mojej aplikacji GUI?
- 22. Czy powinienem używać ActionBarSherlock dla aplikacji Androida 4.0+?
- 23. Zapisywanie zmiany adresu e-mail w domyślnym dostawcy członkostwa w ASP.NET MVC
- 24. Czy atrybut [Authorize] dla kontrolerów MVC ASP.NET jest tylko dla dostawców członkostwa?
- 25. Jak zintegrować dostawcę członkostwa IoC z ASP.NET MVC
- 26. Czy powinienem zbudować następną aplikację internetową w ASP.NET MVC?
- 27. Wielu najemców Środowisko - Wiele dostawcy członkostwa, 1 dB na najemcy, jednej aplikacji
- 28. Implementowanie niestandardowego dostawcy profilu w ASP.NET MVC
- 29. Uzyskaj szczegółowe informacje o dostawcy członkostwa
- 30. przydatnych bibliotek dla aplikacji ASP.NET MVC
Myślę, że prosząc dwa pytania. Budowanie dostawcy usług dla klientów i korzystanie z biblioteki takiej jak Janrain to dwie różne rzeczy. – jfar
Właściwie nie zastanawiam się nad bibliotekami stron trzecich, takimi jak Janrain ... Chciałem wiedzieć głównie, czy powinienem użyć wbudowanego systemu członkostwa, czy wdrożyć własne (dla zwykłego uwierzytelniania). W dalszej perspektywie mogę rozważyć integrację z openidem itd. Ale potrzebuję podstawowego systemu logowania, który będzie działał w tej chwili. StackOverflow, na przykład zbudowany jest przy użyciu MVC. Jak wdrożyli swój system logowania? – Prabhu