2013-01-31 103 views
10

搜索的很多,并试图我finnaly figuered如何让人们注册和登录我的网站上很多后(并给他们的角色等,并做授权)。我继承自ExtendedMembershipProvider类和RoleProvider类,为它们创建了一个自定义类,但现在我仍然遇到让Oauth工作(主要是OpenID)的问题。我注册GoogleClient在AuthConfig,但一旦我尝试登录,它涉及到线(在AccountController.cs):ASP.NET MVC 4如何使用自定义的MembershipProvider和roleprovider实施的Oauth

if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false)) 

于是说还没有实现,现在我检查扩展成员,我可以T覆盖登录(因为它不在那里,但它在哪里)。我还搜查谷歌很多,但没有运气,用于获取OAuth的任何指令一起工作会出汗(我想我需要做出3TH CustomOathprovider,但我无法找到如何从inherith)!

PS:我做了一个custommembershiprpovder和customroleprovider,因为我想用一个不同势数据库方案。

Maxim

回答

11

我不得不重写我的自定义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) 

现在它正在发挥作用。 (我figuered这一点通过重写成员资格提供的所有方法,然后设置每个断点,到处都有它去我充满了一种基于我的自定义数据库。

+1

哇,这救了我很多的痛苦。谢谢! – Kieron

+0

我有同样的问题,但不知道如何配置OAuthWebSecurity,您可以共享任何手动或其他? – BorHunter

3

这将是一个评论,如果我有足够的评论声望。

这不是如何让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

您的项目听起来很酷,好运气。

+0

感谢您的帮助,但事情是我得到了这一切固定在我的MembershipProvider重写3种方法。 – Maximc

相关问题