Magento2 cookies 设置

Magento中如何使用cookies

使用ManagerCookie管理cookies

<?php
namespace Magenest\ManagerCookie\Helper;

use Magento\Framework\Session\SessionManagerInterface;

class ExampleCookie {

   protected $cookieManager;
   protected $cookieMetadataFactory;

   public function __construct(
       \Magento\Framework\Stdlib\CookieManagerInterface $cookieManager,
       \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory $cookieMetadataFactory
       )
   {
       $this->cookieManager = $cookieManager;
       $this->cookieMetadataFactory = $cookieMetadataFactory;
    }

   /**
    * get cookie by name
    */
   public function getCookie($cookieName) {
       return $this->cookieManager->getCookie($cookieName);

   }

   /**
    * set public cookie
    */
   public function setPublicCookie($cookieName, $value) {

   $metadata = $this->cookieMetadataFactory
       ->createPublicCookieMetadata()
       ->setDuration(86400) // Cookie will expire after one day (86400 seconds)
       ->setSecure(true) //the cookie is only available under HTTPS
       ->setPath('/subfolder')// The cookie will be available to all pages and subdirectories within the /subfolder path
       ->setHttpOnly(false); // cookies can be accessed by JS
  
   $this->_cookieManager->setPublicCookie(
       $cookieName,
       $value,
       $metadata
   );
}
   
   /**
    * set sensitive cookie
    */
 public function setSensitiveCookie($cookieName, $value) {

   $metadata = $this->cookieMetadataFactory
       ->createSensitiveCookieMetadata()
       ->setPath('')// for global
       ->setDomain('.example.com');// cookie will be available for www.example.com, example.com and will not be available for anotherexample.com

   $this->_cookieManager->setSensitiveCookie(
       $cookieName,
       $value,
       $metadata
   );
}

}

在Magenton中有两种类型的cookie。它们是公共敏感cookie:
Public cookies: JS 可以访问
Sensitive cookies:JS不可访问

设置cookie时,需要设置原始cookie数据和一些元数据。此元数据包括cookie的有效路径、cookie过期时间的持续时间等

JS操作cookies
<script type="text/javascript">
   require([
       'jquery',
       'jquery/jquery.cookie'
   ], function ($) {
       $(document).ready(function () {

           var simple_cookie = $.cookie('name_cookie'); // Get Cookie Value, note: You can only get a cookie if it is public
           if(!simple_cookie) {
               $.cookie('name_cookie', 'value of cookie', {expires: 86400}); // Set Cookie with metadata (note the cookies set here are public)
           }else {
               console.log(simple_cookie);
           }
       });
</script>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容