3

我正在尝试自定义我自己的 ExtendedMembershipProvider 实现。我不知道 GetUserIDFromOauth 方法应该做什么?我看到它默认抛出异常,并且它应该从开放身份验证提供程序返回用户 ID。

我看不到应该如何完成,除非这意味着查找该用户是否存在于系统中?这是它的目的吗?我发现缺乏文档令人困惑......

谢谢。

4

1 回答 1

3

GetUserIdFromOAuthExtendedMembershipProvider类使用的一种方法,用于在您的 Web 应用程序数据库中的用户表中查找基于User.Id您从 OAuth 或 OpenId 提供程序获得的方法。获取指定用户的数据后,您需要将其保存在数据库中。ProviderProviderUserIdProviderProviderUserId

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;
    }

此实现假定您的表中有ProviderProviderUserId字段User。如果此信息保存在不同的表中,您只需修改 LINQ 即可返回所需的结果。

于 2012-12-10T09:29:22.917 回答