用户在当前主体中签名的时间

时间:2016-01-22 00:42:51

标签: asp.net-core

从使用授权的默认Asp.net 5 MVC模板开始,我尝试检查User控制器操作中的Login声明。

我无法理解的是User.IsSignedIn()何时成为true

var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
if (result.Succeeded)
{
   if (User.IsSignedIn())
   /* more code */
}

在上面的代码User.IsSignedIn()中返回false

但是在此之后的行动中,它重新回归true

签名真的发生在哪里?

我希望它能在_signInManager.PasswordSignInAsync期间完成,但显然不会。{/ p>

1 个答案:

答案 0 :(得分:1)

由于ASP.NET身份验证基于Cookie,如果为当前请求设置了身份验证Cookie,User.IsSignedIn()方法将返回true。此cookie由_signInManager.PasswordSignInAsync(..)创建,并存储在操作方法的响应(而不是请求)中。

下一个操作方法会在请求中收到Cookie,这就是为什么您会在该方法中看到User.IsSignedIn()返回true而不是实际执行登录的方法。