ASP.NET MVC 4 как реализовать Oauth с пользовательским параметром membershipprovider и roleprovider
После многого поиска и многого, пытаясь выяснить, как заставить людей зарегистрироваться и войти на мой сайт (и дать им роль и т.д. и сделать авторизацию). Я унаследован от класса ExtendedMembershipProvider и RoleProvider, сделав для них как пользовательский класс, но теперь у меня все еще возникают проблемы с работой Oauth (в основном OpenID). Я зарегистрировал GoogleClient в AuthConfig, но как только я попытаюсь войти в систему и он попадает в строку (в AccountController.cs):
if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false))
Затем он говорит, что еще не реализован, теперь я проверил расширенное членство, и я не могу переопределить Login (поскольку он не существует, но где он). Я также искал google alot, но не повезло, любые инструкции для получения oauth для работы были бы потеть (я думаю, мне нужно сделать 3-й CustomOathprovider, но я не могу найти, что наследовать)!
PS: Я сделал custommembershiprpovder и customroleprovider, потому что я хочу использовать другую схему базы данных.
Максим
Ответы
Ответ 1
Мне пришлось переопределить еще 3 метода в моем настраиваемом memberbershipprovider
public override void CreateOrUpdateOAuthAccount(string provider, string providerUserId, string userName)
public override int GetUserIdFromOAuth(string provider, string providerUserId)
//return -1 if User got no OauthAccount
public override string GetUserNameFromId(int userId)
теперь он работает. (Я вычислил это, переопределив все методы в провайдере членства, а затем установив точку останова для каждого, и всюду он заполнил метод, основанный на моей пользовательской базе данных.
Ответ 2
Это был бы комментарий, если бы у меня хватило репутации для комментариев.
Это не то, как заставить OAuth работать в вашем сценарии, но в случае, если это помогает, источник для OAuthWebSecurity.Login находится в http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/5cb74eb3b2f3#src/Microsoft.Web.WebPages.OAuth/OAuthWebSecurity.cs и чтобы увидеть, как SimpleMembership реализовал OAuth, вы можете посмотреть http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/5cb74eb3b2f3#src/WebMatrix.WebData/SimpleMembershipProvider.cs.
Ваш проект звучит круто, удачи.