
**クリックしてクリックして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
終わり。
失礼します。黙示録の前に数時間残っています。私は自分で準備しなければなりません。