Как я могу присоединить пользовательского поставщика членства в своем приложении MVC ASP.NET?

Самый простой путь состоит в том, чтобы создать вычисляемый столбец в XLS, который генерировал бы синтаксис оператора вставки. Тогда скопируйте, они вставляют в текстовый файл и затем выполняются на SQL. Другие альтернативы должны купить дополнение возможности соединения базы данных для Excel и записать код VBA для выполнения того же.

5
задан Cherian 15 January 2010 в 05:54
поделиться

3 ответа

Надеюсь, я смогу внести дополнительную ясность в другие ответы, поскольку они действительно не объясняйте, что происходит, что не поможет вам в замешательстве.

Во-первых, реализуйте свой собственный провайдер, который, судя по тому, что вы уже сделали, поэтому я просто добавлю небольшой фрагмент кода и не буду вдаваться в подробности здесь:

using System.Web.Security;

public class MyCustomMembershipProvider : MembershipProvider
{
    public override bool ValidateUser(string username, string password)
    {
        if (username.Equals("BenAlabaster") && password.Equals("Elephant"))
            return true;

        return false;
    }

    /* Override all the other methods required to extend MembershipProvider */        
}

Затем вы настраиваете своего провайдера в своем web.config, следя за тем, чтобы заполнить атрибуты, которые настраивают базовый MembershipProvider:

<membership defaultProvider="MyCustomMembershipProvider">      
    <providers>        
        <clear />        
        <add name="MyCustomMembershipProvider" 
             type="MyNamespace.MyCustomMembershipProvider" 
             enablePasswordRetrieval="false"
             enablePasswordReset="true"          
             requiresQuestionAndAnswer="false"          
             requiresUniqueEmail="true"           
             passwordFormat="Hashed"           
             maxInvalidPasswordAttempts="10"           
             minRequiredPasswordLength="6"           
             minRequiredNonalphanumericCharacters="0"           
             passwordAttemptWindow="10"           
             passwordStrengthRegularExpression=""           
             applicationName="/" />      
    </providers>     
</membership>

Следующий момент, я думаю, вы слишком задумываетесь, фактическое подключение к вашему веб-приложению. В то время как в приложении WebForms вам как бы нужно кодировать остальное для себя - все остальное за вас сделает платформа MVC - все, что вам нужно сделать, это добавить атрибут [Authorize] в свой метод действия, и структура проверит, если вы вы вошли в систему, и если не перенаправляете вас на страницу входа. Страница входа найдет вашего настраиваемого провайдера, потому что он настроен в web.config, и войдет в систему вашего пользователя. Вы можете получить доступ к информации о вошедшем в систему пользователе со своих контроллеров, указав объект User :

6
ответ дан 14 December 2019 в 08:54
поделиться

Насколько сильно вы изменились в этом индивидуальном членстве? Как вы меняли названия таблиц? Вы можете регистрировать пользователей и прочее? Т.е. работает ли ваше индивидуальное членство?

Если вы изменили много вещей, например, изменили имя таблицы ролей на что-то другое или что-то в этом роде, вам придется переопределить тег Authroize.

Однако, если ваше пользовательское членство не работает, то вы, вероятно, не настроили его правильно, и настройка такая же, как и в веб-формах. Вам просто нужно настроить свой webconfig.

  </authentication>
    <membership>
      <providers>
        <clear />
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ConnectionString"
         enablePasswordRetrieval="false"
         enablePasswordReset="true"
          requiresQuestionAndAnswer="false"
          requiresUniqueEmail="true"
           passwordFormat="Hashed"
           maxInvalidPasswordAttempts="10"
           minRequiredPasswordLength="6"
           minRequiredNonalphanumericCharacters="0"
           passwordAttemptWindow="10"
           passwordStrengthRegularExpression=""
           applicationName="/"  />
      </providers>
    </membership>
    <profile>
      <providers>
        <clear />
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ConnectionString" applicationName="/" />
      </providers>
    </profile>
    <roleManager enabled="true">
      <providers>
        <clear />
        <add connectionStringName="ConnectionString"
          applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <add applicationName="/" name="AspNetWindowsTokenRoleProvider"
          type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
    </roleManager>
0
ответ дан 14 December 2019 в 08:54
поделиться

Мой пользовательский поставщик членства указан в web.config:

 <membership defaultProvider="MyMembershipProvider">
  <providers>
    <clear/>
    <add name="MyMembershipProvider" type="Namespace.MyMembershipProvider, Namespace" connectionStringName="connstring" [...] />
  </providers>
</membership>

Затем просто используйте статический класс членства.

1
ответ дан 14 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: