为 egg 提供 cookie 操作的封装。
ctx.cookies = new Cookies(ctx, keys[, defaultCookieOptions]);
ctx.cookies.get('key', 'value', options);
ctx.cookies.set('key', 'value', options);
初始化时需要传递 Array 类型 的keys 参数,否则无法使用 cookies 的 signed
和 encrypt
功能。
每次设置或读取 signed cookie 或者 encrypt cookie 的时候,会用 keys 进行加密。每次加密都通过 keys 数组的第一个 key 进行加密,解密会从先到后逐个 key 尝试解密。读取 signed cookie 时,如果发现不是用第一个 key 进行加密时,会更新签名为第一个 key 加密的值。读取 encrypt cookie 时不会进行更新操作。
通过 cookies.set(key, value, options)
的方式来设置一个 cookie。其中 options 支持的参数有:
String
cookie 的有效路径,默认为 /
。String
cookie 的有效域名范围,默认为 undefined
。Date
cookie 的失效时间。Number
cookie 的最大有效时间,如果设置了 maxAge,将会覆盖 expires 的值。Boolean
是否只在加密信道中传输,注意,如果请求为 http 时,不允许设置为 true https 时自动设置为 ture。Boolean
如果设置为 ture,则浏览器中不允许读取这个 cookie 的值。Boolean
如果设置为 true,在一个请求上重复写入同一个 key 将覆盖前一次写入的值,默认为 false。Boolean
是否需要对 cookie 进行签名,需要配合 get 时传递 signed 参数,此时前端无法篡改这个 cookie,默认为 true。Boolean
是否需要对 cookie 进行加密,需要配合 get 时传递 encrypt 参数,此时前端无法读到真实的 cookie 值,默认为 false。通过 cookies.get(key, value, options)
的方式来读取一个 cookie。其中 options 支持的参数有:
Boolean
是否需要对 cookie 进行验签,需要配合 set 时传递 signed 参数,此时前端无法篡改这个 cookie,默认为 true。Boolean
是否需要对 cookie 进行解密,需要配合 set 时传递 encrypt 参数,此时前端无法读到真实的 cookie 值,默认为 false。通过 cookie.set(key, null)
来删除一个 cookie。如果传递了 signed
参数,签名也会被删除。
dead-horse |
fengmk2 |
atian25 |
whxaxes |
xyeric |
jedmeng |
---|---|---|---|---|---|
Junyan |
beliefgp |
snapre |
popomore |
ziyunfei |
brizer |
This project follows the git-contributor spec, auto updated at Mon Jun 20 2022 12:14:02 GMT+0800
.