2016-06-15 2 views
1

Я реализую Angular Project для службы. Я использую .NET Web API. Веб-API является безстоящим, поэтому я использую Cookie для поддержки аутентификации. AuthLogin Controller Проверяет, что учетные данные верны, если это TRUE, то он создает cookie и передает cookie через HTTP-ответ. Кроме того, я добавил ActionFilterAttribute для проверки пользователя. Если какой-либо запрос получил веб-интерфейс, он запускает ActionFilterAttribute перед входом в контроллер. Их я проверяю, запрос содержит любой файл cookie, и он проверяет его с помощью базы данных. После подтверждения Cookie мне нужно продлить срок действия печенья до 30 минут.Как продлить срок действия Cookie в .Net Web API HttpActionContext

Методы контроллера

My Web API

[HttpPost] 
public HttpResponseMessage AuthLogin() 
{ 
     serverCookie = new CookieHeaderValue 
           ("Test", "Super"); 
     serverCookie.Expires = DateTimeOffset.Now.AddMinutes(15); 
     serverCookie.Domain = Request.RequestUri.Host; 
     serverCookie.Path = "/"; 


    HttpResponseMessage response = Request.CreateResponse(_credential.Item2 ? HttpStatusCode.OK : HttpStatusCode.Unauthorized); 

    response.Headers.AddCookies(new CookieHeaderValue[] { serverCookie }); 
    return response; 
} 

[HttpPost] 
[Authenticate] 
public string SecurePost() 
{ 
    return "Success"; 
} 

ActionFilterAttribute C# Код:

public class AuthenticateAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(HttpActionContext actionContext) 
    {    
     Debug.WriteLine("Cookie Life Time Extended Successfully to 30 Mins."); 
    } 
} 

Мое требование к продлен срок службы Cookie 30 Mins и отправить информацию вместе с возвращаемым значением , Пожалуйста, помогите мне в этом отношении.

ответ

0

HTTP protocol не отправляет время истечения срока действия cookie на сервер. Таким образом, вы не можете продлить срок действия cookie.

Браузер отправит на сервер только имя и значение cookie. Все остальные свойства, такие как expires, domain, path, httponly не могут быть доступны после установки cookie.

Когда вы назначаете Cookie в ответ, заголовок SetCookie добавляется к выходу, и он будет содержать не только значение, но и путь и значение expires.

Но когда клиентский браузер отправляет файл cookie на сервер, он просто включает имя и значение cookie и не отправляет путь или не истекает.

+0

Если я создаю еще один файл cookie с тем же именем, он перезапишет существующее? –

+0

На ваш вопрос уже есть ответ. См. Эту ссылку http://stackoverflow.com/questions/4056306/how-to-handle-multiple-cookies-with-the-same-name –

Смежные вопросы