dasprid/pikkuleipa

此软件包已被废弃,不再维护。未建议替代软件包。

PSR-7 JWT cookie处理器

2.0.2 2019-01-06 17:17 UTC

This package is auto-updated.

Last update: 2022-04-07 01:20:41 UTC


README

Build Status Coverage Status Latest Stable Version Total Downloads License

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”或“饼干”的意思,这里没有太多花哨的词!