Asp.Identity OWIN Cookie无法进行身份验证

时间:2017-07-06 18:52:22

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

以下是我用来登录的代码。它回来后说成功了。但是,如果我尝试获取UserID,或者在任何页面上执行User.Identity.IsAuthenticated,则表示错误。

我无法弄清楚这里会发生什么。

var SignInManager = Context.GetOwinContext().GetUserManager<ApplicationSignInManager>();

        var result = SignInManager.PasswordSignIn(txtUsername.Text, txtPassword.Text, false, true);

        switch (result)
        {
            case SignInStatus.Success:
                Response.Redirect(User.IsInRole("Admin") ? "~/Admin/Dashboard.aspx" : "~/User/Dashboard.aspx");
                break;
            case SignInStatus.LockedOut:
                Response.Redirect("~/Account/Lockout");
                break;
            case SignInStatus.RequiresVerification:
                Response.Redirect("~/Account/Unknown",true);
                break;
            case SignInStatus.Failure:
            default:
                txtErrorMessage.Text = "Invalid Username/Password";
                txtPassword.Text = "";
                break;
        }

它几乎就像说成功,但它真的不能正常工作。 我尝试了很多不同的东西,但似乎没有任何东西可以保证我的身份验证。

2 个答案:

答案 0 :(得分:0)

尝试使用SignInManager.PasswordSignIn(txtUsername.Text,txtPassword.Text,true,true);

第三个参数应该设置为true,因为如果此参数为false,浏览器将不知道它已经过身份验证。

关于methotd的总结写道:

  

isPersistent:           //标记指示登录cookie是否应在浏览器后保留           //关闭。

答案 1 :(得分:0)

出于某种原因,改变这个:

var result = SignInManager.PasswordSignIn(txtUsername.Text, txtPassword.Text, false, true);

这个修好了,不知道为什么。

var result = await SignInManager.PasswordSignInAsync(txtUsername.Text, txtPassword.Text, false, true);