14時の間食

CakePHPの記事を中心にWeb制作について

CakePHP2 特定のidでログイン状態にする方法

CakePHP
アイキャッチ画像-CakePHP2 特定のidでログイン状態にする方法

Authコンポーネントでの認証は一般的に、ユーザーにusernamepasswordを送信してもらい、$this->Auth->login()で認証を行います。(規約に則った場合)

が、時々そういった行程を伴わずとも、サーバサイドで自動的にログインを許可したい場合があります。

例)

  • 自分しかログインしないアプリケーションで、IPや端末など、特定の条件を満たしていればアクセスしただけでログイン状態にしたい場合。
  • 会員向けサービスで、メール認証→ユーザー登録完了後、初回ログインの手間を省いてあげたい時。

実装方法

Authコンポーネントをロードしたコントローラーで以下のように記述すると、自動的にログインが可能です。
ただし許可する条件はよく吟味し、不正ログインにはくれぐれも注意して実装してください。

//ログインさせたいユーザーのid
$id = 2;

//ユーザーデータを取得
$user = $this->User->find('first', array(
    'conditions' => array('User.id' => $id),
    'recursive' => -1
    )
);

//パスワードを削除
unset($user['User']['password']);

//['User']キー内をloginメソッドに渡す
if ($this->Auth->login($user['User'])) {
    //ログイン後にしたい処理
    //…
}

実は…

同様のことがCookbookにも記載されています。 http://book.cakephp.org/2.0/ja/core-libraries/components/authentication.html#id16

「手動でのユーザログイン」と紹介されているのが個人的にちょっとわかりずらかったので記事にしてみました。

カテゴリー

最近の記事

Author

  • ささきち-このブログを書いてる人
    s3make@ささきち
    多摩川沿いに住むフリーのWebデザイナーです。近所のイオンによく行きます。