germania-kg/redirect-unauthorized

1.1.1 2017-12-20 09:59 UTC

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。

特别是

  1. 当中间件执行时:如果响应对象是401未授权,将请求URI存储在会话中,并重定向到登录URL。

  2. 调用下一个中间件(或页面控制器)。登录控制器应在成功后设置响应对象为204无内容

  3. 路由后,检查响应是否为204无内容,并重定向到会话中存储的URI。

安装

$ composer require germania-kg/redirect-unauthorized

自定义

默认情况下,需要响应状态码401204。创建自己的扩展以使用其他代码

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