2014-11-13 2 views
1

Я создаю версию старого веб-приложения ASP для MVC, и мне нужно повторно использовать существующие файлы cookie, чтобы пользователям не пришлось перенастраивать свои настройки в версии MVC. Большинство файлов cookie имеют значение пути /, но другие имеют значение пути/scripts. Те, у которых значение пути/скриптов не содержится в Request.Cookies.Cookie с другим значением пути, отсутствующим в Request.Cookies

Может ли кто-нибудь знать, как я могу получить доступ и обновить куки/скрипты в контроллере? Кстати, я довольно новичок в MVC.

В идеале я хотел бы использовать решение на стороне сервера, но если это не возможно, решение на стороне клиента должно быть работоспособным.

Благодаря

ответ

0
Server Side code to Get and Set Cookies : 
     public void SetCookie(string key, string value, TimeSpan expires) 
     { 
      var encodedCookie = new HttpCookie(key, value); 

      encodedCookie.HttpOnly = true; 

      if (HttpContext.Current.Request.Cookies[key] != null) 
      { 
       var cookieOld = HttpContext.Current.Request.Cookies[key]; 
       cookieOld.Expires = DateTime.Now.Add(expires); 
       cookieOld.Value = encodedCookie.Value; 
       HttpContext.Current.Response.Cookies.Add(cookieOld); 
      } 
      else 
      { 
       encodedCookie.Expires = DateTime.Now.Add(expires); 
       HttpContext.Current.Response.Cookies.Add(encodedCookie); 
      } 
     } 

     public string GetCookie(string key) 
     { 
      string value = string.Empty; 
      HttpCookie cookie = HttpContext.Current.Request.Cookies[key]; 

      if (cookie != null) 
      { 
       // For security purpose, we need to encrypt the value. 
       HttpCookie decodedCookie = cookie; 
       value = decodedCookie.Value; 
      } 
      return value; 
     } 




Client Side code to Get and Set cookies 

    function setCookie(cname, cvalue, exdays) { 
     var d = new Date(); 
     d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); 
     var expires = "expires=" + d.toGMTString(); 
     document.cookie = cname + "=" + cvalue + "; " + expires; 
    } 

    function getCookie(cname) { 
     var name = cname + "="; 
     var ca = document.cookie.split(';'); 
     for (var i = 0; i < ca.length; i++) { 
      var c = ca[i]; 
      while (c.charAt(0) == ' ') c = c.substring(1); 
      if (c.indexOf(name) != -1) { 
       return c.substring(name.length, c.length); 
      } 
     } 
     return ""; 
    } 
+0

Спасибо, что нашли время, чтобы ответить Ганеша. Это очень похоже на то, что у меня есть в настоящее время. Моя проблема в том, что коллекция 'HttpContext.Current.Request.Cookies' не содержит файлы cookie с помощью пути/скриптов. Он содержит только файлы cookie с путём/ Есть ли способ указать путь, который вы хотите использовать при запросе файлов cookie? Кажется, что он по умолчанию имеет значение / – cspete

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