###前提・実現したいこと
identity2.0のフォーム認証(個人 ユーザー アカウント)にて、
IdentityUserを継承したApplicationUserに最終アクセス日時「LastAccessDate」のフィールドを追加し、
ページにアクセスする度にLastAccessDateのフィールドをサーバマシンの現在時刻で更新したいと考えております。
###プロジェクト構成
- Visual Studio Professional 2017
- ASP.NET MVC5.2.3
- .NET Framework 4.6.1
- EntityFramework 6.1.3
- ASP.NET Identity 2.2.1
- IIS10
###アドバイスいただきたいこと
現在は、以下のコードにて、ログイン時のみ更新を実現しています。
全てのページにおいてLastAccessDateを更新するための方法がありましたら、
ご教示いただきたいと考えております。
C#
1 // POST: /Account/Login 2 [HttpPost] 3 [AllowAnonymous] 4 [ValidateAntiForgeryToken] 5 public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) 6 { 7 if (!ModelState.IsValid) 8 { 9 return View(model); 10 } 11 12 // これは、アカウント ロックアウトの基準となるログイン失敗回数を数えません。 13 // パスワード入力失敗回数に基づいてアカウントがロックアウトされるように設定するには、shouldLockout: true に変更してください。 14 var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); 15 switch (result) 16 { 17 case SignInStatus.Success: 18 19 using(var context = new ApplicationDbContext()) 20 { 21 context.Users.Single(u => u.Id == User.Identity.GetUserId()).LastAccessDate == DateTime.Now(); 22 await context.SaveChangesAsync(); 23 } 24 return RedirectToLocal(returnUrl); 25 case SignInStatus.LockedOut: 26 return View("Lockout"); 27 case SignInStatus.RequiresVerification: 28 return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); 29 case SignInStatus.Failure: 30 default: 31 ModelState.AddModelError("", "無効なログイン試行です。"); 32 return View(model); 33 } 34 }
回答1件
あなたの回答
tips
プレビュー