2015年9月18日金曜日

Silexでベーシック認証とセッション

Silex(1.3)でベーシック認証とセッションです。SessionServiceProviderを登録して、非常に簡単に実現できます。

セッションの設定
$app['session']->set('user', array('username' => $username));

セッション情報の取得
$app['session']->get('user');

サンプルそのままです。
$app->register(new Silex\Provider\SessionServiceProvider());

$app->get('/login', function () use ($app) {
  $username = $app['request']->server->get('PHP_AUTH_USER', false);
  $password = $app['request']->server->get('PHP_AUTH_PW');

  if ($username === 'username' && $password === 'password') {
    // セッション設定
    $app['session']->set('user', array('username' => $username));
    return $app->redirect('/account');
  }

  $response = new Response();
  $response->headers->set('WWW-Authenticate', sprintf('Basic realm="%s"', 'Enter username and password'));
  $response->setStatusCode(401, 'Please sign in.');
  return $response;
});

$app->get('/account', function () use ($app) {
  // セッション情報取得
  if (null === $user = $app['session']->get('user')) {
    return $app->redirect('/login');
  }

  return "Welcome {$user['username']}!";
});

実際に設定してみたサイトがこちら

参考サイト
SessionServiceProvider(Silex Documentation)

0 件のコメント:

コメントを投稿