2013-04-11 6 views
0

Мы создали CustomSimpleMembershipProvider в шаблоне Интернет в asp.net mvc4 как такКак SimpleMembershipProvider проволокой в ​​MVC4

public class MySimpleMembershipProvider : SimpleMembershipProvider { 
    public override bool RequiresUniqueEmail  { 
     get   {    return true;   } 
    } 
} 

Но используя это, кажется, тайна, как

  • нет web.config запись
  • нет ссылок на SimpleMembershipProvider в InitializeSimpleMembershipAttribute или SimpleMembershipInitializer
    поэтому его не может изменить

так что вопрос в том, где проводка для SimpleMembershipProvider в asp.net mvc4 и как его изменить?

ответ

1

Он подключен вверх в web.config. Вы должны иметь запись в файле web.config, как показано ниже, если вы создали его с использованием шаблона Интернета.

<roleManager enabled="true" defaultProvider="SimpleRoleProvider"> 
    <providers> 
    <clear/> 
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/> 
    </providers> 
</roleManager> 
<membership defaultProvider="SimpleMembershipProvider"> 
    <providers> 
    <clear/> 
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" /> 
    </providers> 
</membership> 

Вам нужно изменить запись на членство в чем-то вроде этого:

<membership defaultProvider="SimpleMembershipProvider"> 
    <providers> 
    <clear/> 
    <add name="SimpleMembershipProvider" type="MyAssembly.MyNamespace.MySimpleMembershipProvider, MyAssembly" /> 
    </providers> 
</membership> 

Но создание собственного поставщика, который наследует от SimpleMembershipProvider не может быть лучшим способом для достижения ваших целей. SimpleMembership легко настраивается без изменения поставщика как demonstrated in this article. Вы также можете указать, что адрес электронной почты будет использоваться для идентификации с помощью WebSecurity.InitializeDatabaseConnection method. Я не уверен, что переопределить RequiresUniqueEmail даст вам желаемые результаты. Посмотрите на эту статью на decoupling SimpleMembership from MVC. Если вы примете такой подход, вы можете использовать свободный API в EF, чтобы убедиться, что письмо уникально.

+0

Спасибо, читайте другие статьи на своем сайте для SimpleMembership, очень полезно – Kumar

0

Основная регистрация осуществляется от этого метода:

WebSecurity.InitializeDatabaseConnection 

http://msdn.microsoft.com/en-us/library/webmatrix.webdata.websecurity.initializedatabaseconnection%28v=vs.111%29.aspx

(редактировать) Не уверен, что если вы на самом деле смотрел на ссылку, но это, где вы телеграфировать соединение имя, имя таблицы и столбцы. Причина, по которой он работает без записей в web.config, заключается в том, что Simple Membership уже включен по умолчанию, и вам просто нужно вызвать этот метод для его активации.

public static void InitializeDatabaseConnection(
string connectionStringName, 
string userTableName, 
string userIdColumn, 
string userNameColumn, 
bool autoCreateTables 
) 

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

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

+0

Не задан вопрос – Kumar

+0

> где проводка для SimpleMembershipProvider в asp.net mvc4 и как его изменить? - Этот метод является проводкой – LouD

+0

Он называется Simple, потому что он обеспечивает базовые функции, которые должны «работать» с любой базой данных, если вы будете следовать некоторым основным соглашениям об именах. Цель состоит в том, чтобы не быть таким же вовлеченным, как написание стандартного поставщика членства, но похоже, что так вы действительно хотите идти. Пользовательский простой поставщик членства - это вид оксюморона. – LouD

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