以下是我用来登录的代码。它回来后说成功了。但是,如果我尝试获取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;
}
它几乎就像说成功,但它真的不能正常工作。 我尝试了很多不同的东西,但似乎没有任何东西可以保证我的身份验证。
答案 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);