Есть ли способ расширить членство в ASP.NET? - PullRequest
2 голосов
/ 07 мая 2011

Я хочу расширить статический класс public static class Membership и public abstract class MembershipProvider, есть ли способ сделать это?

Ответы [ 2 ]

5 голосов
/ 07 мая 2011

См. Реализация поставщика членства на MSDN для полного и подробного объяснения того, как создать пользовательский поставщик членства путем наследования от MembershipProvider.Что касается статического класса Membership, то нет смысла его расширять;вы не можете переопределить статические методы.И в любом случае он просто делегирует экземпляр MembershipProvider, поэтому вы не хотите расширять класс Membership, вы просто хотите настроить свою конфигурацию так, чтобы ваш новый MembershipProvider вызывался.

0 голосов
/ 12 июня 2012

Для тех, кто хочет расширить существующих провайдеров, что-то вроде:

using System;
using System.Web;
using System.Web.Security;

namespace System.Web.MVC_Extensions
{
    public static class SqlMembershipProviderExtensions
    {
        public static string GenerateAccessToken(this MembershipProvider provider, string username, int expiresInMinutes)
        {
            if (provider.GetType().Name != "SqlMembershipProvider")
                throw new NotSupportedException("Access tokens only supported by SqlMembershipProvider.");

            ...
        }

        public static bool ValidateAccessToken(this MembershipProvider provider, string username, string token)
        {
            if (provider.GetType().Name != "SqlMembershipProvider")
                throw new NotSupportedException("Access tokens only supported by SqlMembershipProvider.");

            ...
        }
    }
}
...