3

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

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

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

Так что я был бы признателен, если кто-нибудь может дать me несколько советов:

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

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

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

+2

Посмотрите учебник http://nerddinner.com, чтобы узнать, как они используют OpenID, код на http://nerddinner.codeplex.com/ – tvanfosson

+0

* Я хочу реализовать OpenID, потому что он действительно классный и современный. * Я не могу представить себе более странную причину использования любой технологии или подхода. Если у вас нет особых требований, которые будут удовлетворены некоторыми технологиями или подходами, вы должны подумать дважды, прежде чем использовать его. –

+1

Требование состоит в том, чтобы пользователи могли входить в систему с помощью facebook, yahoo и других, так как очень сложно создавать учетные записи повсюду. Это сделает наш сайт более социальным и простым в работе. С точки зрения пользователя эта функциональность современна и крута - для них важно то, что вы можете начать заниматься вещами без необходимости фактически проходить через процесс регистрации. Кроме того, мы не разрабатываем бизнес-сайт или сайт интрасети, который требует надлежащей проверки подлинности и авторизации. – Unknown

ответ

4

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

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

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

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

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

Name 
Email 
Authentication Type 
Authentication Id 

Пример:

Name  Email  AuthenticationType  AuthenticationId 
----  -------  ------------------  ----------------  
John  [email protected]  GoogleOpenId   OpenIdClaimId 
Ben   [email protected]  Internal    ben 
Dave  [email protected]  FacebookOAuth   FacebookUserId 

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

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

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

+1

Благодарим вас за ответ. После многого поиска я нашел, как и сделал пользовательскую реализацию MemebershipProvider. Это было нелегко, но теперь я действительно горжусь тем, что я сделал. Пример с таблицей очень приятный, и я использовал подобный подход (поскольку он является первым и может быть лучшим, что вы можете придумать). В любом случае, я буду отмечать ваше сообщение как ответ, поскольку это было бы полезно. – Unknown

Смежные вопросы