我正在嘗試自定義我自己的ExtendedMembershipProvider實現。我不知道GetUserIDFromOauth方法應該做什麼?我發現它默認會拋出一個異常,並且它應該從打開的auth提供程序返回用戶ID。ExtendedMembershipProvider.GetUserIDfromOauth返回什麼用戶ID?
我沒有看到這應該如何完成,除非這意味着找到該用戶是否存在於系統中?這是目的嗎?我發現缺乏文檔混淆...
謝謝。
我正在嘗試自定義我自己的ExtendedMembershipProvider實現。我不知道GetUserIDFromOauth方法應該做什麼?我發現它默認會拋出一個異常,並且它應該從打開的auth提供程序返回用戶ID。ExtendedMembershipProvider.GetUserIDfromOauth返回什麼用戶ID?
我沒有看到這應該如何完成,除非這意味着找到該用戶是否存在於系統中?這是目的嗎?我發現缺乏文檔混淆...
謝謝。
GetUserIdFromOAuth
是使用ExtendedMembershipProvider
類來找到你的用戶表User.Id
基於Provider
和ProviderUserId
Web應用程序的數據庫,你的OAuth或OpenID提供商獲取的方法。獲取指定用戶的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;
}
此實現假定你有你的User
表Provider
和ProviderUserId
領域。如果將這些信息保存在不同的表中,則只需修改LINQ即可返回所需的結果。
好的,謝謝。這就說得通了。 –