asp.net登录成功,但IsAuthenticated为false
我有一个使用ASP.NET附带的安全性的ASP 5应用程序,它使用Microsoft.AspNet.Identity和Owin以及System.Web.security。我有一个严重的登录问题,这将阻止我的网站公开-成功的登录有时不起作用。去年夏天,该网站被我的敏捷俱乐部私自使用,出现了登录问题 当问题发生时,成功登录的用户将被重定向到另一个网页,并且在页面加载中成功登录的下一页的代码中,HttpContext.Current.user.Identity.IsAuthenticated为false,而不是通常的和预期的true,这会导致登录由于返回而看起来什么都不做。我有两个不同场景的登录页面,其中一个页面比另一个页面工作得更好,尽管代码是相同的,只是有些逻辑决定下一个页面与登录无关。更好的组登录页面与工作更少的页面进入同一页面。登录可能有效,也可能无效,一旦失败,它将在同一登录页面上继续失败 来自登录按钮回调的代码在两个主登录中是相同的asp.net登录成功,但IsAuthenticated为false,asp.net,security,login,owin,Asp.net,Security,Login,Owin,我有一个使用ASP.NET附带的安全性的ASP 5应用程序,它使用Microsoft.AspNet.Identity和Owin以及System.Web.security。我有一个严重的登录问题,这将阻止我的网站公开-成功的登录有时不起作用。去年夏天,该网站被我的敏捷俱乐部私自使用,出现了登录问题 当问题发生时,成功登录的用户将被重定向到另一个网页,并且在页面加载中成功登录的下一页的代码中,HttpContext.Current.user.Identity.IsAuthenticated为fals
protected void LogIn(object sender, EventArgs e)
{
if (IsValid) {
// Validate the user password
var signinManager = Context.GetOwinContext().GetUserManager<ApplicationSignInManager>();
string password = Password.Text;
if (Helper.IsEmpty(password)) {
password = OrgGroup.DEFAULT_PASSWORD;
}
// This doesn't count login failures towards account lockout
// To enable password failures to trigger lockout, change to shouldLockout: true
var result = signinManager.PasswordSignIn(LoginEmail.Text, password, RememberMe.Checked, false);
switch (result)
{
case SignInStatus.Success:
ApplicationUser user = signinManager.UserManager.FindByName(LoginEmail.Text);
if (RememberMe.Checked) {
SignUpPlace.RememberMe(Response, LoginEmail.Text);
}
FormsAuthentication.SetAuthCookie(user.UserName, true);
if (user.GroupId.Equals(Guid.Empty)) {
Response.Redirect("/Home");
}
else {
Response.Redirect("/Member/" + user.GroupId.ToString());
}
break;
case SignInStatus.LockedOut:
Response.Redirect("/Account/Lockout");
break;
case SignInStatus.RequiresVerification:
Response.Redirect(String.Format("/Account/TwoFactorAuthenticationSignIn?ReturnUrl={0}&RememberMe={1}",
Request.QueryString["ReturnUrl"],
RememberMe.Checked),
true);
break;
case SignInStatus.Failure:
default:
FailureText.Text = "Invalid login attempt";
ErrorMessage.Visible = true;
break;
}
}
}
Web配置已完成
<system.web>
<authentication mode="None" />
...
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="FormsAuthentication" />
...
...
...
我有几个更注重技术的用户告诉我他们可以使用的两个登录(public和member)的登录失败和成功。更多luddite类型的用户只是认为什么都不管用。请记住,我似乎工作良好,这有助于避免登录及其问题
我设法在我的开发系统上重现了这个问题,有几次我确定IsAuthenticated是错误的,这让我陷入了死胡同,不明白成功登录如何在重定向中转换为IsAuthenticated。在线搜索并没有帮助我理解微软安全的黑匣子
有人知道什么会导致成功登录后IsAuthenticated为false吗?如果它在我的开发过程中再次出现,有什么我应该看的吗?
使用提供的安全工具是错误的吗?他们提供我所需要的一切
我不能让成功登录随机失败 该代码混合了Owin身份验证和表单身份验证。混合使用这两者的原因是什么?使用FormsAuthentication是我唯一能找到的延长cookie过期日期以记住登录名的方法。这似乎是可行的,但我很高兴改变它,如果我可以指出不同的Owin解决方案。两者之间的界线非常混乱。web配置未启用表单身份验证。该代码与Owin身份验证和表单身份验证混合使用。混合使用这两者的原因是什么?使用FormsAuthentication是我唯一能找到的延长cookie过期日期以记住登录名的方法。这似乎是可行的,但我很高兴改变它,如果我可以指出不同的Owin解决方案。两者之间的界线非常混乱。web配置未启用窗体身份验证。
<system.web>
<authentication mode="None" />
...
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="FormsAuthentication" />
...