我在我的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 。
答案 0 :(得分:0)
cookieless =“ false”您可以尝试使用无cookie属性作为默认值还是true