MVC3, Entity Framework, OpenID и MembershipProvider - PullRequest
3 голосов
/ 10 марта 2012

Я создаю проект, который использует подход EF Code First, и теперь я должен создать пользователей.Я хочу реализовать OpenID, потому что это действительно круто и современно.Есть много учебных пособий о том, как это сделать (не читал их, но я, конечно, буду).

Я довольно привык к EF и MVC, но все, что касается членов, ролей, провайдеров и т. Д., Туманно.Я уверен в двух вещах:

  • Я хочу использовать OpenID и
  • Я хочу управлять таблицей пользователей с помощью EF Code First

Поэтому я был бы признателен, если бы кто-нибудь дал мне несколько советов:

  • Должен ли я реализовать членство MembershipProvider или я мог бы использовать такой проект: codeplex ?
  • Как OpenID, EF и Membership будут сочетаться друг с другом?

Я знаю, что это ОЧЕНЬ широкий предмет, но мне нужны только базовые подсказки, мне нужно знать, с чего начать.Такие вещи, как «Вы можете использовать MembershipProvider и OpenID, но вам лучше этого не делать, потому что ...».

Любая помощь очень ценится.

1 Ответ

4 голосов
/ 25 апреля 2012

Требуется, чтобы пользователи могли входить через Facebook, Yahoo и др., Поскольку создавать учетные записи везде очень раздражает.

Мы стремимся предоставитьнесколько вариантов Аутентификация с нашей стороны Пользователи , будь то управляемая вами комбинация имени пользователя и пароля, поставщик OpenId или поставщик OAuth.

Я считаю лучшимподход заключается в том, чтобы сделать эти две концепции (членство и аутентификация) явными.

Мне все равно, как пользователь аутентифицирует , просто при условии, что я могу найти их user информация, когда они это делают.

Простой подход к созданию таблицы User со следующей информацией:

Name
Email
Authentication Type
Authentication Id

Пример:

Name        Email       AuthenticationType      AuthenticationId
----        -------     ------------------      ----------------    
John        a@b.com     GoogleOpenId            OpenIdClaimId
Ben         c@d.com     Internal                ben
Dave        e@f.com     FacebookOAuth           FacebookUserId

Когда пользователь аутентифицируется, мы можем загрузить его пользовательскую информацию, используя метод аутентификации и идентификатор в качестве критерия.Для внутреннего провайдера членства мы можем использовать его имя пользователя, для OpenId их URL-адрес претензии и для OAuth их идентификатор провайдера (например, идентификатор Twitter).

Поэтому непременно используйте EF для управления пользователями но я бы отнесся к провайдеру членства как к еще одному механизму аутентификации, и в этом случае вы также можете использовать стандартный SqlMembershipProvider.

Я написал этот пост очень давно (в контекстеинтернет-магазинов), которые могут быть полезны.

...