刷新页面或更改页面后或几分钟后自动退出用户的问题

时间:2018-12-25 21:41:33

标签: asp.net api c#-4.0 web-config forms-authentication

我在我的api中使用此代码作为登录用户:

var ticket = new FormsAuthenticationTicket(
    1,
    CurrentCustommer.PhoneNumber,
    DateTime.Now,
    DateTime.Now.AddMinutes(FormsAuthentication.Timeout.TotalMinutes),
    false,
    "user,user1",
    FormsAuthentication.FormsCookiePath
);
var encryptedTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)
{
    HttpOnly = true,
    Secure = FormsAuthentication.RequireSSL,
    Path = FormsAuthentication.FormsCookiePath,
    Domain = FormsAuthentication.CookieDomain
};
HttpContext.Current.Response.AppendCookie(cookie);

我的webconfig代码是:

<authentication mode="Forms">
  <forms loginUrl="Login.aspx" protection="All" timeout="10080" slidingExpiration="true">
  </forms>
</authentication>
<compilation debug="true" targetFramework="4.6.2" />
<httpRuntime targetFramework="4.6.2" />
<pages enableSessionState="true" validateRequest="false"></pages>
<sessionState mode="InProc" cookieless="false" timeout="10080" />

现在。用户登录后,几分钟后刷新站点中的页面或更改页面,自动注销;我在Chrome控制台中看到通过“ document.cookie”存储的cookie。此问题在本地主机中不存在,但是当使用服务器时,此问题显示:/

此外,我补充说,我使用的是自定义数据库,而不使用sql成员资格提供程序asp.net。

在调用方法API进行用户登录时,我应该应用某些设置吗?还是我需要应用其他配置?

我真的不知道如何解决此问题。

谢谢。

更新:我通过以下代码检查对用户的身份验证:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.User.Identity.IsAuthenticated)
    {
        //Page.Response.Redirect("/");
        MainContainer.Visible = false;
        Page.ClientScript.RegisterStartupScript(this.GetType(), 
        "CallMyFunction", "LoginForm()", true);
    }
}

更多信息,现在我在登录用户30分钟后的Page_Load中看到 Page.User.ExpireDate

1 个答案:

答案 0 :(得分:0)

cookieless =“ false”您可以尝试使用无cookie属性作为默认值还是true