我正在开发一个REST API项目,用户可以在其中登录并拨打电话。为了做到这一点,我创建了一个cookie,我加密用户名。我的服务器已经部署,并且发生了一些非常奇怪的事情。我不时在响应中收不到cookie。在这种情况下,我只需要在web.config文件中进行任何修改,它就会重新开始工作......我真的不明白为什么......有什么想法吗?
这是我的登录代码:
[Route("login", Order = 1)]
[HttpPost]
[HttpGet]
public async Task<HttpResponseMessage> Login([FromUri] string userId, [FromUri] string userPassword)
{
try
{
Tuple<string, string> result = userService.Authenticate(userId, userPassword);
string sessionIds = result.Item1;
string message = result.Item2;
CookieHeaderValue cookie = CreateSessionsCookie(sessionIds);
cookie.Secure = true;
// Store username for later use
CookieHeaderValue userCookie = new CookieHeaderValue(Strings.Id, Encryption.Protect(userId, Strings.Id));
userCookie.Secure = true;
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, JsonConvert.DeserializeObject(message));
response.Headers.AddCookies(new CookieHeaderValue[] { cookie, userCookie });
return response;
}
catch (Exception ex)
{
return HandleException(ex);
}
}
答案 0 :(得分:0)
使用cookie进行宁静的Web服务有点反模式。只需在标题中包含用户名即可。
至于为何超时,我怀疑它与你的会话超时有关。