私はログイン、登録のためのAsp.netのアイデンティティを使用しています、パスワードなどを忘れ、ソースコードは、リンクの下に、このから取られる:aspnet IDでセッション管理を行うには?
は、今私はUserMasterある1台を持っているし、登録時に私はこの次のフィールドを求めています: フルネーム、EMAILID、パスワード、ContactNumber、性別。
私UserMasterは、この次のフィールドが含まれています:ID、フルネーム、EMAILID、ContactNumber、性別今、ユーザーは登録がこのフルネームは、EMAILID、ContactNumberは、性別が一緒にUserMasterに保存されます形成提出するとき
電子メール、パスワードはAspnetUserに保存されます。
私の登録方法は上記の2つのリンクと同じです。
ここでは、ユーザーは、この方法が成功を返した場合、私は私、ユーザーを検証するために、このメソッドawait SignInManager.PasswordSignInAsync
を使用しますログインする彼の電子メールIDを入力しますときに私UserMasterとAspnetUser間何の関係がログイン時にそれほど存在しないことに気づくかもしれませんこの電子メールIDを使用してUserMasterでこの電子メールをチェックし、一致するものが見つかるとUserMasterからそのUserIdをフェッチしてセッションに保存し、以下のようなログイン方法で自分のアプリケーションを使用します:
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
using (var context = new MyEntities())
{
var fetchUSerId = context.UserMaster.Where(t => t.Email == model.Email).Select(t=>t.UserId).SingleOrDefault();
Session["UserId"] = fetchUSerId;
}
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
私はログイン方法でこれについて話しています:
case SignInStatus.Success:
using (var context = new MyEntities())
{
var fetchUSerId = context.UserMaster.Where(t => t.Email == model.Email).Select(t=>t.UserId).SingleOrDefault();
Session["UserId"] = fetchUSerId;
}
これは適切なやり方であり、より良い方法です。私はユーザーIDを保存する代わりに、ユーザーオブジェクト全体を保存します。
誰でも私にaspnet IDでこれを行う方法を教えてもいいですか?
を確認することができます詳細については
?あなたはそれを騙してそれをすべてカスタムにしても、まだフレームワークを活用することができますか? (私は完全にあなたのコードで何かが不足しているかもしれない)...この記事からの答えを確認してください:http://stackoverflow.com/questions/1064271/asp-net-mvc-set-custom-iidentity-or-iprincipal –
AspNet IDが使用するClaimsIdentityにこれらの値をすべて格納する方がよいでしょう。これはかなり標準的なものです。 –
http://stackoverflow.com/questions/31974228/can-you-extend-httpcontext-current-user-identity-properties/31976327#31976327 –