10

たくさんの検索とたくさんの試みの後、人々が私のサイトに登録してログインできるようにする方法を最終的に見つけました(そして、役割などを与えて承認を行います)。クラス ExtendedMembershipProvider と RoleProvider から継承し、両方をカスタムクラスにしましたが、Oauth を機能させるにはまだ問題があります (主に OpenID)。GoogleClient を AuthConfig に登録しましたが、ログインしようとすると (AccountController.cs で) 次の行に移動します。

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

次に、まだ実装されていないと表示されます。拡張メンバーシップを確認したところ、ログインをオーバーライドできませんでした (存在しないため、どこにあるのか)。私もグーグルをたくさん検索しましたが、うまくいきませんでした。

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 に答える