过去几天我正在努力解决一个问题。对于我的Web应用程序,cookie用于识别机器。如果请求没有传递正确的cookie,那么应用程序将通过第二个因素身份验证(即用户必须输入OTP才能登录)。
仅在iPhone和iPad上,用户被要求每次都进入OTP。我可以看到在iPhone / iPad上创建了cookie,但是没有随后的请求发送到服务器。仅当我们关闭并重新打开Safari浏览器时,才会出现此问题。如果我没有关闭Safari,那么cookie将被传递而没有任何问题,并且应用程序正在按预期工作。
我们在Android / MacOS / Windows操作系统中没有此问题。
如果有任何人有任何想法,请帮助我。
注意:我们正在使用安全的HttpOnly持久性cookie。 cookie的到期时间为一年。
Cookie创建代码如下
private void CreateCookie(HttpResponseBase aobjResponse, string astrCookieKey, string astrCookieValue, DateTime adtCookieExpiry)
{
HttpCookie lobjCookie = new HttpCookie(astrCookieKey)
{
Expires = adtCookieExpiry,
Value = astrCookieValue,
HttpOnly = true,
};
if (aobjResponse.Cookies.Get(astrCookieKey) != null)
{
aobjResponse.Cookies.Remove(astrCookieKey);
}
aobjResponse.Cookies.Add(lobjCookie);
}