Identity 2.0用户将被重定向回“登录”



这是我的登录代码,问题发生在用户登录后重定向到"Profile"。

 protected void UserLogin_Click(object sender, EventArgs e)
        {
            if (IsValid)
            {
                var manager = new IdentityModels.UserManager();
                IdentityModels.User user = manager.Find(Username.Text, Password.Text);
                if (user != null)
                {
                    if (isUserActive(user.PatientId)=="isNotActive")
                    {
                        lblError.Text =
                            "you are no longer active. Please contact your local clinic to find out why.";
                        return;
                    }
                    if (isUserActive(user.PatientId) == "clinicNotActive")
                    {
                        lblError.Text =
                            "Your clinic is no longer active. Please contact your local clinic to find out why.";
                        return;
                    }
                    IdentityModels.IdentityHelper.SignIn(manager, user, RememberMe.Checked);
                    if (manager.IsInRole(user.Id,"Administrator") || manager.IsInRole(user.Id,"Staff") || manager.IsInRole(user.Id,"Physician"))
                    {
                        Response.Redirect("Dashboard");
                    }

                    if (Request.QueryString["Profile"] != null)
                    {
                        IdentityModels.IdentityHelper.RedirectToReturnUrl(Request.QueryString["Profile"], Response);
                    }
                    else
                    {
                        Response.Redirect("Profile");
                    }

                }
                else
                {
                    ModelState.AddModelError("", "Invalid username or password");
                    lblError.Text = "Invalid username or password";
                }
            }
        }

这是我在配置文件页面上的页面加载代码:

 var manager = new IdentityModels.UserManager();
            IdentityModels.User user = manager.FindById(HttpContext.Current.User.Identity.GetUserId());
        if (user == null)
        {
             var ex = new Exception("patient was null, BUT TRIED SIGNING IN NOW" + UserAccess.GetUserId().ToString());
                Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
            Response.Redirect("Login");
        }

Elmah日志显示异常"patient为null,但尝试立即登录0"。

所以,如果我的用户成功登录,他们一定是因为他们正在访问配置文件页面,那么为什么他们中的一些人会遇到这个错误。为什么用户为null?

我只是不明白,为什么它会影响一些而不是全部。当我重新发布网站时,所有用户都可以登录几分钟,有时几小时,然后它就会重新启动。

尝试使用User.Identity而不是HttpContext.Current.User.Identity。我见过一些上下文(基于ASP.NET的会话)与Identity的令牌不同步的情况。

好了,伙计们,这是答案。

将会话状态从InProc更改为SQLServer,登录重定向已经22个小时了,这是以前从未发生过的,所以我认为可以肯定地说,问题已经解决,这就是答案。

相关内容

  • 没有找到相关文章

最新更新