9

APIも必要とし、したがって(おそらく)ログインのOAuthサポートも必要とするWebサイトを構築する私は、ユーザーと認証の一部にアプローチする方法がわかりません。

だから私はRavenDBを備えたASP.NETMC4アプリケーションを持っています。

最善のアプローチは何ですか?

  • RavenDBのメンバーシッププロバイダーの1つを使用し、API部分でOauthを個別に処理するには?元。ここでグリフィンの解決策。

  • または、メンバーシップがらくたを再実装し、OAuthをサポートするカスタムソリューションを作成します。

どこから始めればよいのかよくわかりません。これを行う方法についての提案をいただければ幸いです。

4

2 に答える 2

10

ここに画像の説明を入力してください

**クリックしてクリックしてdaGitHubプロジェクトを表示**

IMO、ユーザー名とパスワードの保存を忘れてください。それはクレイジーな話です!Facebook、Google、またはTwitterの資格情報を使用してログインできるようにします。これは、一般的なWebサイトの80%です。

認証と資格情報の保存は、IMOの2つの異なるタスクです。たとえば、どこで認証するかは関係ありません。一度認証すると、そのデータをどのように保存するかは関係ありません:)

個人的には、RavenDbに保存しますが、それは私の個人的な選択です。

そのため、->これら2つのタスクを分離しておくことは(IMO)非常に重要です。

ここに画像の説明を入力してください

それでは、いくつかのcodezを見てみましょう...。

public ActionResult AuthenticateCallback(string providerKey)
{
    // SNIP SNIP SNIP SNIP

    var model = new AuthenticateCallbackViewModel();
    try
    {
        // SNIP SNIP SNIP SNIP

        // Complete the authentication process by retrieving the UserInformation from the provider.
        model.AuthenticatedClient = _authenticationService.CheckCallback(providerKey, Request.Params, state.ToString());


        // Create a new user account or update an existing account.
        // Whatever you end up doing, this is the part u want to
        // pass this data to your repository (eg. RavenDb, Sql Server, etc)
        // I'll use RavenDb in this example...
        // And yes .. this is a contrite example. U might want to check for
        // existing email or id or whatever u need to do, etc.
        var myUser = Mapper.Map(model.AuthenticatedClient);
        session.Store(myUser);
        session.SaveChanges();

        // SNIP SNIP SNIP SNIP
    }
    catch (Exception exception)
    {
        model.Exception = exception;
    }

    return View(model);
}

それでは、私が行ったことを見てみましょう。このSOの回答では、単なるノイズである冗長なもの(値のチェックなど)をすべて削除しました。

まず、Authenticateコールバックを処理します。例えば。Facebookに行ったところ、「はい」と言われました。あなたはあなたです..そしてそれは私のウェブサイトに戻ってきて、私が私に与えるように頼んだいくつかのデータがあります。

次に...Facebookからいくつかのデータが提供されます..しかし、これはRavenDbで入力したい形式ではない可能性があります。だから私はそれを古いフォーマットから新しい光沢Userのあるクラスに変換します。それはあなたがあなたのDbに固執するものです。

第三に-私はこれをDbに保存します。 これは、カスタムDBロジックを実行する場所です

それでおしまい。

MODULARIZETHATSHIT

終わり。

失礼します。黙示録の前に数時間残っています。私は自分で準備しなければなりません。

于 2012-12-21T05:38:54.980 に答える
0

上手。メンバーシッププロバイダーは肥大化しています。それらの機能を使用する予定がなく、OAuthだけを使用する場合は、使用しません。SimpleMembershipとMVC4で提供される宣誓プロバイダーは、残念ながらさらに大きな混乱を招きます。

したがって、オプションは次のとおりです。

  1. SimpleMembershipを使用する
  2. 組み込みのOAuthサポート
  3. カスタムメンバーシッププロバイダーを使用する
  4. カスタムoauthプロバイダーを使用する

#3に固執する予定がある場合は、(Griffin.MvcContribにある)私のものを使用することをお勧めします。メンバーシッププロバイダーを構築することは簡単ではありません。

oauthに関しては、 https://github.com/rafek/SimpleSocialAuthのようなソリューションがあります。

于 2012-12-20T16:29:18.990 に答える