dasprid / pikkuleipa
PSR-7 JWT cookie处理器
Requires
- php: ^7.1
- cultuurnet/clock: ^1.0
- dflydev/fig-cookies: ^1.0|^2.0
- lcobucci/jwt: ^3.2
- psr/http-message: ^1.0
Requires (Dev)
- dasprid/treereader: ^1.3
- phpunit/phpunit: ^5.5
- psr/container: ^1.0
- squizlabs/php_codesniffer: ^2.7
- zendframework/zend-diactoros: ^1.3
Suggests
- dasprid/treereader: For using the supplied factories
- psr/container: For using the supplied factories
This package is auto-updated.
Last update: 2022-04-07 01:20:41 UTC
README
Pikkuleipa是一个PSR-7兼容应用的cookie管理器,利用JSON Web Tokens(JWT)进行安全处理,并允许处理多个独立的cookie。
安装
通过composer安装
$ composer require dasprid/pikkuleipa
入门(针对Expressive)
导入工厂配置
在您的自动加载配置目录中创建一个名为pikkuleipa.global.php
或类似的文件
<?php return (new DASPRiD\Pikkuleipa\ConfigProvider())->__invoke();
这将引入几个工厂,您可以通过以下方式检索以下对象:
DASPRiD\Pikkuleipa\CookieManager
通过DASPRiD\Pikkuleipa\CookieManagerInterface
DASPRiD\Pikkuleipa\TokenManager
通过DASPRiD\Pikkuleipa\TokenManagerInterface
配置Pikkuleipa
为了使Pikkuleipa能够正常运行,它需要一些配置变量。复制文件doc/example-config.php
并根据需要调整值。
使用cookie管理器
通常,您不需要关心token管理器。重要的是cookie管理器,您可以通过PSR/Container容器或其它方式使用它。它具体提供了三个操作,分别是设置cookie、获取cookie和使cookie过期。
设置cookie
设置cookie非常简单。首先,您可以从cookie管理器中获取现有的cookie,或者创建一个新的cookie。然后,您将这个cookie设置在一个PSR-7响应上,并将修改后的响应返回给用户。
setCookie
方法除了响应和cookie之外,还接受两个额外的参数。第一个参数是cookie是否应该在浏览器会话结束时过期,默认为false。第二个参数定义了setCookie
调用是否应该覆盖先前的expireCookie
调用,默认为true。
<?php use DASPRiD\Pikkuleipa\Cookie; use DASPRiD\Pikkuleipa\CookieManagerInterface; $cookieManager = $container->get(CookieManagerInterface::class); $cookie = new Cookie('foo'); $cookie->set('bar', 'baz'); $newResponse = $cookieManager->setCookie($response, $cookie);
获取cookies
获取cookies也非常简单。在检索cookie时,cookie和token管理器将验证cookie是否存在及其内容是否合法。如果出现问题,将返回一个新的空cookie实例。
<?php use DASPRiD\Pikkuleipa\CookieManagerInterface; $cookieManager = $container->get(CookieManagerInterface::class); $cookie = $cookieManager->getCookie($serverRequest, 'foo'); echo $cookie->get('bar'); // Outputs: bar
过期cookies
使cookies过期与设置cookie一样简单。您可以通过实例或名称来使cookie过期。
<?php use DASPRiD\Pikkuleipa\CookieManagerInterface; $cookieManager = $container->get(CookieManagerInterface::class); $cookie = $cookieManager->getCookie($serverRequest, 'foo'); $newResponse = $cookieManager->expireCookie($cookie); // Or: $newResponse = $cookieManager->expireCookieByName('foo');
关于名称
Pikkuleipa是芬兰语中“cookie”或“饼干”的意思,这里没有太多花哨的词!