使用signin管理员成功登录后,用户仍然显示已退出?

时间:2017-09-02 21:38:24

标签: c# asp.net asp.net-core asp.net-identity

我已将Asp.Net标识框架添加到我从前端调用的WebAPI中。

注册帐户(并在数据库中看到它正确显示)后,我使用该用户的用户名和密码登录,结果是成功但用户未根据登录管理员登录?

我尝试使用此示例使用Cookie身份验证:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/cookie?tabs=aspnetcore2x(将代码段添加到webapi)并在登录时运行此操作,这在WebAPI控制器操作中发生:

        var result = await signInManager.PasswordSignInAsync
                                           (username, password,
                                             true, false); //succeeded
        await HttpContext.SignInAsync("MyCookieAuthenticationScheme", User);

1 个答案:

答案 0 :(得分:2)

BaseController的{​​{3}}解释了User属性:

  

获取或设置与执行操作关联的用户的System.Security.Claims.ClaimsPrincipal。

这表明User是在执行操作之前确定的,因此只是代表首先发起请求的用户(如果您使用密码登录,则很可能是经过身份验证的用户)

在围绕类似场景的Github documentation中,David Fowler解释说:

  

...登录操作不会更改当前请求用户主体。只有在设置了cookie或不记名令牌(或者创建身份所需的auth类型)时,才会在传入请求中发生这种情况。

IdentityResult.Succeededtrue的事实应该足以验证用户是否已登录,因为当登录操作失败时,这只会是false。如果您想在成功登录后使用User属性进行进一步处理,建议您重定向到另一个操作,此下一个请求将包含用户的登录信息。