2014年9月23日火曜日

CakePHP3.0でDBを使わずBasic認証

CakePHPのBasic認証はdb使わなくちゃいけなくて不便。そんなユーザ増やすわけでもないしソースに記述があれば十分。みたいな時に使う。
passワードの記述は適当なsalt混ぜてmd5とかでハッシュ化しとくとより良さそう。

代替クラス

# src/Auth/BasicwodbAuthenticate.php
 $p) {
   if ($username === $u && $password === $p) {
    return array('username' => $username);
   }
  }
  return false;
 }
}

設定

# src/config/app.php
return [
    'App' => [
        'Basicwodb' => ['some-username' => 'some-pass'],
    ],
];

CakePHP3.0でURLを小文字でもControllerにつなぐ

config/routes.phpでオプション設定する。”['routeClass' => 'InflectedRoute']”を追加すると小文字のコントローラ名をinflectしてくれる。

connect('/', ['controller' => 'Index', 'action' => 'index']);
// $routes->connect('/:controller/:action/*');
 $routes->connect('/', ['controller' => 'Index', 'action' => 'index'], ['routeClass' => 'InflectedRoute']);
 $routes->connect('/:controller/:action/*', [], ['routeClass' => 'InflectedRoute']);