germania-kg / redirect-unauthorized
1.1.1
2017-12-20 09:59 UTC
Requires
- aura/session: ^2.1
- psr/http-message: ^1.0
- psr/log: ^1.0
Requires (Dev)
- phpunit/phpunit: ^5.2
- satooshi/php-coveralls: ^1.0
Suggests
- slim/slim: The Slim Framework
This package is auto-updated.
Last update: 2024-09-22 22:45:50 UTC
README
此软件包是从旧代码中提炼出来的。你肯定不希望在您的生产代码中使用它。
此PSR风格的中间件检查响应对象的状态码是否为401未授权,并将当前请求URI存储在Aura.Session Segment中。如果用户已认证(即登录成功,204无内容),他将被重定向到这个URI作为起始URL。重定向状态码为301。
特别是
-
当中间件执行时:如果响应对象是401未授权,将请求URI存储在会话中,并重定向到登录URL。
-
调用下一个中间件(或页面控制器)。登录控制器应在成功后设置响应对象为204无内容。
-
路由后,检查响应是否为204无内容,并重定向到会话中存储的URI。
安装
$ composer require germania-kg/redirect-unauthorized
自定义
默认情况下,需要响应状态码401或204。创建自己的扩展以使用其他代码
class MyRedirector exends Germania\RedirectUnauthorized\Middleware { /** * HTTP Status Code for Redirection * @var string */ public $redirect_status_code = 301; /** * HTTP Status Code for "Unauthorized". Usually 401. * @var string */ public $auth_required_status_code = 401; /** * HTTP Status Code for Responses after successful login. Usually 204. * @var string */ public $authorized_status_code = 204; }
使用
<?php use Germania\RedirectUnauthorized\Middleware; // Aura.Session Segment $session_factory = new \Aura\Session\SessionFactory; $session = $session_factory->newInstance($_COOKIE); $segment = $session->getSegment('Vendor\Package\ClassName'); // Where to redirect unauthorized requests to $login_url = "/login.html" // Optional: PSR-3 Logger $logger = new Monolog $middleware = new Middleware( $segment, $login_url); $middleware = new Middleware( $segment, $login_url, $logger);
Slim 3 示例
<?php use Germania\RedirectUnauthorized\Middleware; $app = new Slim\App; $app->add( new Middleware );
开发和测试
使用develop
分支开发,使用Git Flow。
目前,未指定测试。
$ git clone git@github.com:GermaniaKG/RedirectUnauthorized redirect-unauthorized
$ cd redirect-unauthorized
$ cp phpunit.xml.dist phpunit.xml
$ vendor/bin/phpunit