ExtendedMembershipProvider.GetUserIDfromOauth возвращает какой идентификатор пользователя?
Я пытаюсь настроить мою собственную реализацию ExtendedMembershipProvider. Я понятия не имею, что должен делать метод GetUserIDFromOauth? Я вижу, что он генерирует исключение по умолчанию, и что он должен возвращать идентификатор пользователя от поставщика open auth.
Я не вижу, как это должно быть сделано, если только это не означает, что этот пользователь существует в системе? Это цель? Я считаю, что отсутствие документации сбивает с толку...
Благодарю.
1 ответ
GetUserIdFromOAuth
это метод, используемый ExtendedMembershipProvider
класс, чтобы найти User.Id
в вашей таблице пользователей в базе данных вашего веб-приложения на основе Provider
а также ProviderUserId
что вы получаете от OAuth или OpenId Provider. После получения Provider
а также ProviderUserId
Данные для указанного пользователя, вам необходимо сохранить их в своей базе данных.
Возвращается throw new NotImplementedException();
по умолчанию. Вам нужно реализовать этот метод, чтобы вернуть целое число вашего User.Id
из базы данных вашего приложения.
Это пример реализации:
public override int GetUserIdFromOAuth(string provider, string providerUserId)
{
using (var context = new YourApplicationEntities())
{
// Try to find user with certain Provider and ProviderUserId
var user = context.Users.SingleOrDefault(
q => q.Provider == provider &&
q.ProviderUserId == providerUserId
);
if (user != null)
{
return user.Id;
}
}
return -1;
}
Эта реализация предполагает, что у вас есть Provider
а также ProviderUserId
поле в вашем User
Таблица. Если эта информация сохранена в другой таблице, вам просто нужно изменить LINQ, чтобы вернуть желаемый результат.