誰かがログインするたびにレコードを作成しようとしていますが、ログインポスト中にユーザーIDを取得する際に問題があります。標準的なログインPOSTがあります。サインインの成功の下で私のLoginSysActionを追加しました。しかし、私のユーザーIDはnullです。ここでasp.net mvcでユーザIDを取得するためのlogin loggingメソッドを置く場所は?
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
await LoginSysAction();
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);
}
は私の伐採方法である:
private async Task LoginSysAction()
{
var addSysAction = new SysAction();
addSysAction.Date = DateTime.UtcNow;
addSysAction.UserId = User.Identity.GetUserId();
addSysAction.ActionType = "Login";
db.SysActions.Add(addSysAction);
db.SaveChanges();
}
だから私の質問は基本的にある - 私には利用できないGetUserId()は、この点にありますか?もしそうでなければ、何か似たようなことを達成する最良の方法は何でしょうか?
は 'Microsoft.AspNet.Identityを使用するため、あなたの名前空間を確認してください;' – Supersnake
それはそこにあります。私はそれがユーザーIDがわかっているときと関係があると思うが、ログインプロセスのこの時点でそれがそこにあるように感じた。 –