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, чтобы вернуть желаемый результат.

Другие вопросы по тегам