【问题标题】:How to fetch cookie with name in asp.net如何在asp.net中获取带有名称的cookie
【发布时间】:2017-06-20 20:57:11
【问题描述】:

我需要获取具有指定名称的 cookie。

如果用户凭据有效,我将设置一个 cookie,如下所示。

 public ActionResult Login()
    {
        if(user credentials are valid)
        {
         FormsAuthentication.SetAuthCookie("customer", true);
        }
    }

现在在我的其他一些控制器中,我需要查看是否有任何名为“客户”的 cookie。

  public ActionResult Validate()
    {
        var cookie = Request.Cookies["customer"];
        //here I am getting cookies as null
    }

当我在 chrome 设置中检查 cookie 时,有 cookie 但没有名称 customer 但它存在默认名称 .ASPXAUTH

我的要求不是检查用户是否经过身份验证,我的要求是检查名称为“customer”的 cookie 是否退出,然后做一些我的事情。

如何满足我的这个要求。

谢谢。

【问题讨论】:

  • 除了您的具体问题,您是否只是想查看客户是否已登录?如果你是,你最好使用 Authorization 属性并让 asp 身份处理这些东西。
  • @Steve,不,这不是我的要求。我需要检查是否存在名为“客户”的 cookie,然后做一些其他的事情

标签: c# asp.net asp.net-mvc cookies form-authentication


【解决方案1】:

FormsAuthentication.SetAuthCookie("customer", true);

使用特定的创建表单身份验证cookie,但cookie名称默认为.ASPXAUTH(您可以更改它)。 Forms Auth 模块会进一步识别此类 cookie。请注意这里的customer 是cookie 的值而不是它的名称。

但要创建任意名称的 cookie,只需手动创建即可

public ActionResult Login()
{
   HttpCookie cookie = new HttpCookie("customer", "value");
   this.Response.SetCookie( cookie );
}

请注意,具有任意名称的 cookie (customer)不会被 Forms Auth 模块识别,因此,用户不会被识别为已通过身份验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-26
    • 2012-05-30
    • 1970-01-01
    • 2017-04-10
    • 2018-08-12
    • 2011-05-17
    • 2021-11-03
    相关资源
    最近更新 更多