Если «одноранговая аутентификация» не работает, попробуйте аутентификацию md5.
Чтобы указать хост, попробуйте что-то вроде этого:
psql -d <dbname> -U <username> -h <hostname>
или это:
psql -d <dbname> -U <username> -h <hostname> -W
Это работает для меня:
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
Основываясь на моем собственном опыте попыток сделать то же самое, попытка использовать MembershipProvider для этого будет в конечном итоге разочаровывающим и противоречивым опытом.
Идея модели поставщика членства не для того, чтобы изменить или дополнить определение пользователя, как вы пытаетесь сделать - это предоставить Framework альтернативное средство доступа к информации, которая уже была определена как принадлежащая «MembershipUser».
Я думаю, что вы действительно ищете профиль пользователя. Использование профилей ASP.NET намного проще, чем реализация собственного провайдера. Вы можете найти обзор здесь .
Просто чтобы вы знали, я уже пытался пройти по пути MembershipProvider раньше, и он долгий и ветреный. Вы можете увидеть, удовлетворит ли ваши потребности просто создание классов, реализующих IPrincipal и IIdentity, поскольку они влекут за собой гораздо меньше накладных расходов.