3

Slim ExtrasのBasicHttpAuthミドルウェアを使用して、特定の Slim ルートを認証しようとしています。

これは機能しますが、すべてのルートを認証する必要があります。

$app = new Slim();
$app->add(new HttpBasicAuth('username', 'password'));

$app->get('/', function() use ($app) {
  $app->render('index.php');
});

$app->get('/admin', function() use ($app) {
  $app->render('admin.php');
});

$app->run();

では、HttpBasicAuth を使用して単一のルートを認証するにはどうすればよいでしょうか?

4

1 に答える 1

4

特定のルートに対してのみ実行される HttpBasicAuth に基づくカスタム ミドルウェアを作成することで、これを行うことができます。

class HttpBasicAuthCustom extends \Slim\Extras\Middleware\HttpBasicAuth {
    protected $route;

    public function __construct($username, $password, $realm = 'Protected Area', $route = '') {
        $this->route = $route;
        parent::__construct($username, $password, $realm);        
    }

    public function call() {
        if(strpos($this->app->request()->getPathInfo(), $this->route) !== false) {
            parent::call();
            return;
        }
        $this->next->call();
    }
}

$app->add(new HttpBasicAuthCustom('username', 'password', 'Some Realm Name', 'someroute'));

$app->get('/someroute', function () use ($app) {
    echo "Welcome!";
})->name('someroute');

http://help.slimframework.com/discussions/questions/296-middleware-usage-only-on-specific-routesに感謝します

于 2013-07-08T13:57:49.423 に答える