ExtendedMembershipProvider.GetUserIDfromOauth返回什么用户ID?

时间:2012-11-23 03:10:12

标签: asp.net asp.net-mvc asp.net-mvc-4 membership-provider

我正在尝试自定义我自己的ExtendedMembershipProvider实现。我不知道GetUserIDFromOauth方法应该做什么?我看到它默认抛出一个异常,它应该从开放的auth提供者返回用户ID。

我没有看到应该怎么做,除非这意味着找出该用户是否存在于系统中?这是它的目的吗?我发现缺乏文档令人困惑......

感谢。

1 个答案:

答案 0 :(得分:3)

GetUserIdFromOAuthExtendedMembershipProvider类根据User.IdProvider在您的网络应用数据库中查找用户表中ProviderUserId的方法您从OAuth或OpenId Provider获得。获取指定用户的ProviderProviderUserId数据后,您需要将其保存在数据库中。

默认情况下返回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表中有ProviderUserIdUser字段。如果此信息保存在不同的表中,则只需修改LINQ即可返回所需的结果。