use*_*512 14 asp.net-mvc asp.net-mvc-5.2
请参阅下面的代码:
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
string UserId = User.Identity.GetUserId();
return RedirectToAction("ClientDetails","Home");
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", "Account", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
将UserId始终null和User.Identity.IsAuthenticated永远false.但我可以查看ClientDetails需要身份验证的View .
Dew*_*wey 17
我假设您的示例是AccountController.Login()方法中的代码.我遇到了与您相同的问题,但发现在下一个请求之前不会填充User对象.试试这种方法:
case SignInStatus.Success:
return RedirectToAction("DoWork", "Account");
public async Task<ActionResult> DoWork()
{
//this works
string UserId = User.Identity.GetUserId();
//return to View or Redirect again
}
Run Code Online (Sandbox Code Playgroud)
Geo*_*ffM 13
对于问题的"UserId始终为空"部分,您可以通过model.UserName查找用户:
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
ApplicationUser user = UserManager.FindByName(model.UserName);
string UserId = user.Id;
// UserId is now populated
return RedirectToAction("ClientDetails","Home");
Run Code Online (Sandbox Code Playgroud)
不确定您是否希望User.Identity.IsAuthenticated为true或者是否是观察 - 这不会改变该部分.
| 归档时间: |
|
| 查看次数: |
7994 次 |
| 最近记录: |