10

经过大量搜索和尝试后,我终于弄清楚了如何让人们在我的网站上注册和登录(并赋予他们角色等并进行授权)。我继承了 ExtendedMembershipProvider 和 RoleProvider 类,为它们创建了一个自定义类,但现在我仍然无法让 Oauth 正常工作(主要是 OpenID)。我在 AuthConfig 中注册了 GoogleClient,但是一旦我尝试登录,就会出现以下问题(在 AccountController.cs 中):

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

然后它说尚未实现,现在我检查了扩展会员资格,我无法覆盖登录(因为它不存在,但它在哪里)。我也搜索了很多谷歌,但没有运气,任何让 oauth 使用的说明都会是汗水(我想我需要制作第三个 CustomOathprovider,但我无法找到继承的内容)!

PS:我制作了一个 custommembershiprpovder 和 customroleprovider,因为我想使用不同的数据库方案。

格言

4

2 回答 2

11

我必须在我的自定义 memberbershipprovider 中覆盖另外 3 个方法

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)

现在它正在工作。(我通过覆盖成员资格提供程序中的所有方法来解决这个问题,然后在每个方法上设置一个断点,并且无论它走到哪里,我都根据我的自定义数据库填写方法。

于 2013-02-02T14:12:07.710 回答
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

你的项目听起来很酷,祝你好运。

于 2013-02-02T01:00:06.507 回答