10

Pracuję w Visual Studio 2013 RC i testuję uwierzytelnianie formularzy przy użyciu nowych pakietów Microsoft.AspNet.Identity.*.Odłączenie Microsoft.AspNet.Identity. *

Chciałbym zintegrować te koncepcje (Użytkownicy, role, itp., Itp.), Ale chcę używać własnych modeli domen (POCO), które są w innym zestawie. Nie chcę również tworzyć zależności od bibliotek dll Microsoft.AspNet.Identity.*.

Czy to możliwe? Znalazłem this article, która mówi, że tak nie jest, ale artykuł jest napisany na podstawie pakietów paczek tożsamości Preview a nie RC.

Odpowiedz

1

Tak, jest to w pełni obsługiwany scenariusz, zasadniczo będziesz chciał użyć exclude, używając biblioteki Microsoft.AspNet.Identity.EntityFramework, która ma domyślną implementację EF, ale powinieneś być w stanie ponownie użyć klas Managera i po prostu zaimplementować swoje własne niestandardowe Sklepy korzystające z własnych POCO, których menedżer będzie używał dobrze przez interfejs. W przypadku RTM jego usprawnienia i uproszczenia były nieco inne, uważam, że wersja RC nie była jeszcze tak usprawniona.

Updated można uzyskać szybki dostęp do bitów RTM tutaj: MyGet

+0

Czy będzie przykład, jak to zrobić (z niestandardowym sklepem) dla RTM? Chciałbym móc wykorzystać zabezpieczenia OWIN i po prostu być w stanie "powiedzieć", gdzie można znaleźć użytkowników, profile, role itp., Używając własnych domen POCO ... – zam6ak

+0

Tak, będzie kilka przykładów z RTM, które będą zademonstruj to, magazyny magazynu Azure Table, sklep MySql, przechowuje przy użyciu istniejących baz danych (które prawdopodobnie byłyby najbardziej podobne do twojego scenariusza) –

+0

Czekam na te przykłady (w szczególności istniejący db/model) i sytuacja nadziei będzie inna niż jeden opisany w @Olav Nybø odpowiedzi i komentarze ... – zam6ak

4

I zostały zaktualizowane mój przykładowy projekt, który można znaleźć tutaj: Identity RC1 sample

Teraz implementuje model Entity Framework, nadal wymaga odwołania do Microsoft.AspNet.Identity.EntityFramework, ponieważ nie chcę ponownie wdrożyć wszystkie klasy Store również. Ale przykład pokazuje, jak możesz użyć własnych klas POCO dla modelu.

Jeśli chcesz całkowicie usunąć zależność od Microsoft.AspNet.Identity.EntityFramework z montażem modelu trzeba zaimplementować klasę wykonawczą interfejs IIdentityStore który ma właściwości następujących interfejsów:

  • IUserLoginStore
  • IRoleStore
  • IUserSecretStore
  • ITokenStore
  • IUserClaimStore
  • IUserManagementStore
  • IUserStore

klasie IIdentityStore powinny być w zespole oddzielić od montażu modelu, z odniesieniem do montażu Twojego modelu. Zestaw IIdentityStore byłby zależny od rdzenia tożsamości ASP.Net.

Niestandardowa realizacja IIdentityStore musiałby somwhow móc konwertować do i od swoich klas POCO do interfejsów ASP.Net tożsamości, takie jak IUser, IUserSecret itp

Wydaje mi się, że dużo pracy dla niewielki zysk, jeśli mimo to korzystasz z EF w swoich sklepach.

Podejmowanie zależności od zestawu AspNet.Identity.Core i korzystanie z niektórych klas POCO, które implementują po jednym małym interfejsie, wydaje się dużo prostsze.

+0

Hmm, nawet te są częścią pakietu podstawowego Microsoft.AspNet.Identity' - czyż nie? – zam6ak

+0

Masz rację, zaktualizowałem swoją odpowiedź. Moje POCO w moim przykładowym projekcie implementują również interfejsy IUser, IUserSecret, które również znajdują się w zestawie Microsoft.AspNet.Identity.Core. –

+1

Podjęcie tej zależności (w celu implementacji interfejsu) zdecydowanie upraszcza pewne rzeczy, ale nie sądzę, że będzie działać dla nas. Jeśli masz domenę DLL z Twoimi modelami i aplikację konsolową, która używa jej również, to nie ma sensu nosić zależności ASP.NET. Poza tym, kiedy już ruszysz tą drogą (wybierając zależności w modelu domeny podstawowej) ... po kilku latach skończy się koszmar :) – zam6ak

1

Na wszelki wypadek. Może mogę komuś pomóc. exorcising entity framework from asp.net.Identity

ja stworzony osobny projekt (klasa Library), a następnie dodać do asp.identity.core ref, potem ja realizowane moja klasa nie UserStore i paszy moja tożsamość config w projekcie internetowym.

Działa dobrze w projekcie ze złożoną architekturą n-warstwową.

+0

Dziękuję! Innym przydatnym artykułem jest [Nieprzestrzeganie tożsamości ASP.NET ze wzorcami] (http://timschreiber.com/2015/01/14/persistence-ignorant-asp-net-identity-with-patterns-part-1/) – nrodic

Powiązane problemy