2.10.0 • Published 2 months ago

egg-cookies v2.10.0

Weekly downloads
23,083
License
MIT
Repository
github
Last release
2 months ago

egg-cookies

NPM version build status Test coverage npm download

为 egg 提供 cookie 操作的封装。

ctx.cookies = new Cookies(ctx, keys[, defaultCookieOptions]);
ctx.cookies.get('key', 'value', options);
ctx.cookies.set('key', 'value', options);

初始化

初始化时需要传递 Array 类型 的keys 参数,否则无法使用 cookies 的 signedencrypt 功能。

每次设置或读取 signed cookie 或者 encrypt cookie 的时候,会用 keys 进行加密。每次加密都通过 keys 数组的第一个 key 进行加密,解密会从先到后逐个 key 尝试解密。读取 signed cookie 时,如果发现不是用第一个 key 进行加密时,会更新签名为第一个 key 加密的值。读取 encrypt cookie 时不会进行更新操作。

defaultCookieOptions

全局默认配置:

  • autoChips - Boolean 是否开启 CHIPS 的自动适配方案, 会自动给 Cookie 新增一个 _CHIPS- 为前缀的分区 Cookie,优先读取非分区 Cookie,读取失败则尝试读取 _CHIPS- 前缀的同名 Cookie 适配三方 Cookie 禁止逻辑。 一旦 cookies.set 设置 partitioned=true,那么会强制忽略 autoChips 参数。

设置 cookie

通过 cookies.set(key, value, options) 的方式来设置一个 cookie。其中 options 支持的参数有:

  • path - String cookie 的有效路径,默认为 /
  • domain - String cookie 的有效域名范围,默认为 undefined
  • expires - Date cookie 的失效时间。
  • maxAge - Number cookie 的最大有效时间,如果设置了 maxAge,将会覆盖 expires 的值。
  • secure - Boolean 是否只在加密信道中传输,注意,如果请求为 http 时,不允许设置为 true,https 时自动设置为 true
  • partitioned - Boolean 是否设置独立分区状态(CHIPS)的 Cookie。注意,只有 securetrue 的时候此配置才会生效。
  • removeUnpartitioned - Boolean 是否删除非独立分区状态的同名 cookie。注意,只有 partitionedtrue 的时候此配置才会生效。
  • httpOnly - Boolean 如果设置为 true,则浏览器中不允许读取这个 cookie 的值。
  • overwrite - Boolean 如果设置为 true,在一个请求上重复写入同一个 key 将覆盖前一次写入的值,默认为 false
  • signed - Boolean 是否需要对 cookie 进行签名,需要配合 get 时传递 signed 参数,此时前端无法篡改这个 cookie,默认为 true
  • encrypt - Boolean 是否需要对 cookie 进行加密,需要配合 get 时传递 encrypt 参数,此时前端无法读到真实的 cookie 值,默认为 false
  • priority - String 表示 cookie 优先级的字符串,可以设置为 'low', 'medium', 'high',默认为 undefinedA Retention Priority Attribute for HTTP Cookies

读取 cookie

通过 cookies.get(key, value, options) 的方式来读取一个 cookie。其中 options 支持的参数有:

  • signed - Boolean 是否需要对 cookie 进行验签,需要配合 set 时传递 signed 参数,此时前端无法篡改这个 cookie,默认为 true。
  • encrypt - Boolean 是否需要对 cookie 进行解密,需要配合 set 时传递 encrypt 参数,此时前端无法读到真实的 cookie 值,默认为 false。

删除 cookie

通过 cookie.set(key, null) 来删除一个 cookie。如果传递了 signed 参数,签名也会被删除。

License

MIT

贡献者

fengmk2dead-horsesemantic-release-botatian25whxaxesxyeric
jedmengJunyanbeliefgpsnaprepopomoretang-xy
ziyunfeibrizerxuezieronlylovermb

git-contributor 说明,自动生成时间:Mon Feb 19 2024 17:41:40 GMT+0800

2.10.0

2 months ago

2.9.4

4 months ago

2.9.3

4 months ago

2.9.2

4 months ago

2.9.0

4 months ago

2.9.1

4 months ago

2.8.1

4 months ago

2.8.3

4 months ago

2.8.2

4 months ago

2.8.0

4 months ago

2.7.0

9 months ago

2.7.1

9 months ago

2.6.1

2 years ago

2.6.0

2 years ago

2.5.0

2 years ago

2.4.3

2 years ago

2.4.1

4 years ago

2.4.2

4 years ago

2.4.0

4 years ago

2.3.4

4 years ago

2.3.3

4 years ago

2.3.2

4 years ago

2.3.1

4 years ago

2.3.0

4 years ago

2.2.7

5 years ago

2.2.6

6 years ago

2.2.5

6 years ago

2.2.4

6 years ago

2.2.3

6 years ago

2.2.2

6 years ago

2.2.1

7 years ago

2.2.0

7 years ago

2.1.0

7 years ago

2.0.0

7 years ago

1.0.0

8 years ago