2013-03-27 14 views
16

Próbowałem przez 2 dni, aby coś działało, ale do tej pory nie miało to sensu. Potrzebuję zarządzania użytkownikami i ich rolami, niczym więcej.ASP.net MVC 4 Administracja użytkownikami i rolami (właściwość "Membership.Provider" musi być instancją "ExtendedMembershipProvider".)

Próbowałem zrozumieć, jak to zrobić w MVC, ale nie mogę znaleźć szczegółowego samouczka, jak to zrobić, w Internecie lub w książce MVC 4.

zacząłem poprzez umożliwienie bazę aspnet z aspnet_regsql użyteczności, to utworzyć te tabele:

Tables added by aspnet_regsql

To wszystko znalazłem w poradniku, nie pokazują, jak współdziałać z tymi tabelami (które zakładam jest z domyślnego dostawcy członkostwa), do tej pory znalazłem istnieją 3 główne opcje w ten sposób:

  • dostawca członkostwa domyślna (z których nic nie wiem)
  • uniwersalne Dostawcy
  • SimpleMembership

znalazłem ten samouczek:

http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-7

Tutaj proszą, aby utworzyć nowy MVC 4 projekt aplikacji z szablonu aplikacji internetowej i skopiować wszystkie pliki odnoszeniu kontrola konta.

Zrobiłem to dla mojego projektu, ale jak tylko próbuję zalogować się uzyskać:

Aby wywołać tej metody, „Membership.Provider” własność musi być instancją „ExtendedMembershipProvider”.

które zgodnie z tym forum: http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/d352bb1b-577c-42b7-8872-5ed59cd65f32/

z powodu jak to określono profil, członków i roleManager dostawcy na moim pliku web.config, który jest zdefiniowany w następujący sposób:

<profile> 
    <providers> 
    <clear /> 
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="DatabaseConnection" applicationName="/" /> 
    </providers> 
</profile> 
<membership> 
    <providers> 
    <clear /> 
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="DatabaseConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> 
    </providers> 
</membership> 
<roleManager enabled="true"> 
    <providers> 
    <clear /> 
    <add connectionStringName="DatabaseConnection" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" /> 
    <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" /> 
    </providers> 
</roleManager> 

All I trzeba mieć możliwość dodawania nowych użytkowników, przypisywania im ról i pokazywania różnych treści zgodnie z rolą uzyskującą dostęp do widoku.

Pytanie # 1 Co jest dostawcą członkostwa wykorzystywane przy tworzeniu aplikacji MVC 4 z szablonu aplikacji www?

Pytanie # 2

Co robię źle z pliku web.config? Jak poprawnie zdefiniować dostawców?

Pytanie # 3

Która opcja odpowiada mi lepiej? Jeśli znasz fajny samouczek, możesz go do niego linkować?

Każda pomoc będzie naprawdę doceniona! z góry dziękuję!

+2

Czy patrzysz na proste członkostwo ASP.NET? Oto dobry punkt wyjścia: http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5 -web-forms-and-asp-net-mvc-4-templates.aspx – Floremin

+0

Właśnie zauważyłem, że moja klasa kontrolerów ma [InitializeSimpleMembership], która wyraźnie stwierdza, że ​​używam simplememhiphip. Na łączu, który mi wysyłasz, pokazują, jak działa sieć. Plik konfiguracyjny definiuje dostawców, właśnie dodałem te do mojego pliku web.config i jak tylko zaloguję się i nadal otrzymuję to samo o wywołanie tej metody, właściwość "Membership.Provider" musi być instancją "ExtendedMembershipProvider". Co ja robię źle? – oskar132

+1

Czy próbowałeś rozpocząć "czysty" z prostym członkostwem? Ten wątek może pomóc: http://stackoverflow.com/questions/13324544/how-to-add-asp-net-membership-provider-in-a-pusty-mcv-4-project-template – Floremin

Odpowiedz

4

Członkostwo, z którego korzystasz, jest datowane. Nowy numer Universal Membership Provider używa nowych nazw tabel bez prefiksu aspnet_.

1) Proszę spojrzeć na link Scotta Hanselmana.

2) Nie potrzebujesz profile, jeśli go nie używasz. roleManager Konfiguracja jest nieprawidłowa.

FYI: Zdefiniuj wyraźnie machineKey w pliku web.config; W przyszłości zaoszczędzi Ci to wiele bólu głowy.

P.S. Zgodziłem się z tobą. Właśnie skończyłem czytać Pro ASP.NET MVC 4 by Adam Freeman; nie wspomniał o usługodawcy członkowskim. ASP.NET MVC 4 and the Web API by Jamie Kurtz używa starszego dostawcy członkostwa, jeśli chcesz przeczytać.

+0

Czy możesz podać na maszynie? po co to jest? Dzięki za odpowiedź! – oskar132

+1

Jeśli hasło jest zaszyfrowane lub zaszyfrowane, dostawca członkostwa użyje 'machineKey' do wygenerowania go. Jeśli przeniesiesz aplikację na inny serwer, istniejący użytkownik nie będzie mógł się już zalogować, jeśli 'machineKey' nie zostanie jawnie zdefiniowane. – Win

+0

Rozumiem, wielkie dzięki za informacje, będę o tym pamiętać! – oskar132

1

Pytanie # Do czego służy dostawca członkostwa, gdy tworzę aplikację MVC 4 z szablonem aplikacji internetowej?

Odpowiedź: SimpleMembershipProvider

Pytanie # 2 Co robię źle z pliku web.config? jak mogę poprawnie zdefiniować dostawców?

Odpowiedź: Dla SimpleMembershipProvider, modyfikacje pliku web.config nie są konieczne. Zobacz tutaj, aby uzyskać szczegółowe informacje dotyczące konfiguracji/konfiguracji i samouczek: http://aaron-hoffman.blogspot.com/2013/02/aspnet-mvc-4-membership-users-passwords.html

1

Członkostwo i bezpieczeństwo były niezwykle skomplikowane w ASP.Net i nadal są zbyt skomplikowane w środowisku ASP.NET MVC. Ale na szczęście w ogóle nie można korzystać z wbudowanego członkostwa. Stworzyłem proste solutione i używam go w wielu projektach, a teraz dodałem go do github, zobacz http://github.com/TesserisPro/ASP.NET-SImple-Security-Provider Możesz łatwo go dostosować.

+0

Wielkie dzięki, przyjrzymy się temu, ale widziałem, że z nowym MCV 5 zmienili członkostwo i wydaje się o wiele łatwiejszy w użyciu, widziałeś go? – oskar132

+0

Tak, mam.Był dostawcą WebMatrix niż dostawca OWIN. Jeśli przenosisz się z MVC4 do MVC5, będziesz spędzał godzinę lub więcej na radzeniu sobie z tymi rzeczami i ich zależnościami, ponieważ są one nadal zbyt skomplikowane, jak w przypadku rzeczy prostych. Właśnie dlatego stworzyłem ten. To tylko zapewnia użytkownikom funkcji logowania i bardzo proste role i nie zależy od statków kosmicznych. – Dmitry

+0

@Dmitry Wszystko jest zapisane w 1 tabeli z twoim sampleproject. To dobry szablon dla małej aplikacji. – JoshYates1980

Powiązane problemy