【问题标题】:How to Extend Cookie expiry in .Net Web API HttpActionContext如何在 .Net Web API HttpActionContext 中延长 Cookie 过期时间
【发布时间】:2016-06-15 10:05:51
【问题描述】:

我正在使用 .NET Web API 实现服务端的 Angular 项目。 Web API 是无状态的,所以我使用 Cookie 来维护身份验证。 AuthLogin Controller 检查凭据是否正确,如果正确,则创建 Cookie 并通过 HTTP 响应传递 cookie。此外,我添加了 ActionFilterAttribute 来验证用户。如果 Web API 收到任何请求,它会在进入控制器之前触发 ActionFilterAttribute。他们我正在检查,请求包含任何 Cookie,并与数据库一起检查。 验证 Cookie 后,我需要将 Cookie 有效期延长至 30 分钟

我的 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 分钟,并将信息与返回值一起发送。请在这方面帮助我。

【问题讨论】:

    标签: c# angularjs cookies asp.net-web-api asp.net-web-api2


    【解决方案1】:

    我能够在 MVC 应用程序中延长 cookie 的过期时间

    HttpCookie cookie = Request.Cookies["MyCookie"];
    if (cookie!+null && !cookie.Value.IsEmpty())
    {
            // Update the cookie expiration
            cookie.Expires = DateTime.Now.AddMinutes(Convert.ToInt32(1));
            Response.Cookies.Set(cookie);//Request.Cookies.Set(cookie);
    }
    else
    { 
    }
    

    【讨论】:

      【解决方案2】:

      HTTP protocol 从不向服务器发送 cookie 过期时间。所以你不能延长cookie过期时间。

      浏览器只会将 cookie 名称和值发送到服务器。设置 cookie 后,将无法访问所有其他属性,例如 expiresdomainpathhttponly

      当您在响应中分配 Cookie 时,SetCookie 标头会添加到输出中,其中不仅包含值,还包含路径和过期值。

      但是当客户端浏览器将 cookie 发送回服务器时,它只包含 cookie 的名称和值,并且不发送路径或过期信息。

      【讨论】:

      猜你喜欢
      • 2015-06-26
      • 2019-02-03
      • 1970-01-01
      • 2023-03-19
      • 2017-06-22
      • 2011-04-17
      • 2015-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多