我正在尝试自定义我自己的ExtendedMembershipProvider实现。我不知道GetUserIDFromOauth方法应该做什么?我看到它默认抛出一个异常,它应该从开放的auth提供者返回用户ID。
我没有看到应该怎么做,除非这意味着找出该用户是否存在于系统中?这是它的目的吗?我发现缺乏文档令人困惑......
感谢。
答案 0 :(得分:3)
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即可返回所需的结果。