Реализация пользовательского MembershipUser

Если «одноранговая аутентификация» не работает, попробуйте аутентификацию md5.

Чтобы указать хост, попробуйте что-то вроде этого:

 psql -d <dbname> -U <username> -h <hostname>

или это:

 psql -d <dbname> -U <username> -h <hostname> -W
10
задан Picflight 26 May 2009 в 18:49
поделиться

3 ответа

Это работает для меня:

public class CustomMembershipUser : MembershipUser
{
    public CustomMembershipUser(
        string providerName,
        string name,
        object providerUserKey,
        string email,
        string passwordQuestion,
        string comment,
        bool isApproved,
        bool isLockedOut,
        DateTime creationDate,
        DateTime lastLoginDate,
        DateTime lastActivityDate,
        DateTime lastPasswordChangedDate,
        DateTime lastLockoutDate
        )
        : base(providerName, name, providerUserKey, email, passwordQuestion,
        comment, isApproved, isLockedOut, creationDate, lastLoginDate,
        lastActivityDate, lastPasswordChangedDate, lastLockoutDate)
    {
    }

    // Add additional properties
    public string CustomerNumber { get; set; }

}

public class CustomMembershipProvider : MembershipProvider
{

    public override MembershipUser GetUser(string username, bool userIsOnline)
    {
        if (string.IsNullOrEmpty(username))
        {
            // No user signed in
            return null;
        }

        // ...get data from db

        CustomMembershipUser user = new CustomMembershipUser(
                    "CustomMembershipProvider",
                    db.Username,
                    db.UserId,
                    db.Email,
                    "",
                    "",
                    true,
                    false,
                    db.CreatedAt,
                    DateTime.MinValue,
                    DateTime.MinValue,
                    DateTime.MinValue,
                    DateTime.MinValue);

        // Fill additional properties
        user.CustomerNumber = db.CustomerNumber;

        return user;

    }

}

// Get custom user (if allready logged in)
CustomMembershipUser user = Membership.GetUser(true) as CustomMembershipUser;

// Access custom property
user.CustomerNumber
11
ответ дан 3 December 2019 в 16:10
поделиться

Основываясь на моем собственном опыте попыток сделать то же самое, попытка использовать MembershipProvider для этого будет в конечном итоге разочаровывающим и противоречивым опытом.

Идея модели поставщика членства не для того, чтобы изменить или дополнить определение пользователя, как вы пытаетесь сделать - это предоставить Framework альтернативное средство доступа к информации, которая уже была определена как принадлежащая «MembershipUser».

Я думаю, что вы действительно ищете профиль пользователя. Использование профилей ASP.NET намного проще, чем реализация собственного провайдера. Вы можете найти обзор здесь .

12
ответ дан 3 December 2019 в 16:10
поделиться

Просто чтобы вы знали, я уже пытался пройти по пути MembershipProvider раньше, и он долгий и ветреный. Вы можете увидеть, удовлетворит ли ваши потребности просто создание классов, реализующих IPrincipal и IIdentity, поскольку они влекут за собой гораздо меньше накладных расходов.

3
ответ дан 3 December 2019 в 16:10
поделиться
Другие вопросы по тегам:

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