Sentry2(Laravel4)で、ユーザー認証

前回の『Sentry2(Laravel4)でデータベーステーブルの作成』では、Sentry2のデータベーステーブルを作成して、グループとユーザーを簡単に登録するところまで調べてみました。本日は、登録したユーザーで認証(ログイン)する方法を調べてみたいと思います。

ログイン情報でログイン

1. Sentry2で認証するには、authenticateメソッドを使います。ルーターに下記のコードを記述します。

laravel4/app/routes.php

//Sentryでログイン
Route::get('sentry/login',function(){
    try
{
    // ログイン情報のセット
    $credentials = array(
        'email'    => 'nakada@gmail.com',
        'password' => 'password',
    );

    // 認証します。
    $user = Sentry::authenticate($credentials, false);
    echo 'ようこそ'.$user->last_name.'さん<br>';
    echo 'あなたのIDは'.$user->id.'です。';
}
catch (Cartalyst\Sentry\Users\LoginRequiredException $e)
{
    echo 'ログインフィールドは必須です。';
}
catch (Cartalyst\Sentry\Users\PasswordRequiredException $e)
{
    echo 'パスワードフィールドは必須です。';
}
catch (Cartalyst\Sentry\Users\UserNotFoundException $e)
{
    echo 'ユーザーが見つかりませんでした。';
}
catch (Cartalyst\Sentry\Users\UserNotActivatedException $e)
{
    echo 'ユーザーはアクティベートされていません。';
}

// The following is only required if throttle is enabled
catch (Cartalyst\Sentry\Throttling\UserSuspendedException $e)
{
    echo 'ユーザー権限が停止されています。';
}
catch (Cartalyst\Sentry\Throttling\UserBannedException $e)
{
    echo '禁止ユーザーです。';
}
});
  • 6-9行目:Sentryはemailとpasswordで認証しますので、ログインするユーザーのemailとpasswordの値をセットします。
  • 11行目:authenticateメソッドの第1引数は、ログイン情報、第2引数は認証情報をクッキーに保存するかどうかを指定します。
  • ※第2引数がtrueの場合は、下記のように記述することも出来ます。
    $user=Sentry::AuthenticateAndRemember($credentials);

2. ブラウザでアクセスしてみます。きちんとログインされているのが分かると思います。

localhost/laravel4/public/sentry/login

laravel4_066

検索したユーザーでログイン

3. 下記のように検索したユーザーでログインすることも出来ます。ルーターに下記のように記述します。

laravel4/app/routes.php

//検索したユーザーでログイン
Route::get('sentry/id/login',function(){
try
{
    // ユーザーIDで検索
    $user = Sentry::getUserProvider()->findById(1);

    // 検索したユーザーでログイン
    Sentry::login($user, false);
}
catch (Cartalyst\Sentry\Users\LoginRequiredException $e)
{
    echo 'ログインフィールドは必須です。';
}
catch (Cartalyst\Sentry\Users\UserNotActivatedException $e)
{
    echo 'ユーザーがアクティベートされていません。';
}
catch (Cartalyst\Sentry\Users\UserNotFoundException $e)
{
    echo 'ユーザーが見つかりません。';
}

// スロットルが有効なときにのみ使用できます。
catch (Cartalyst\Sentry\Throttling\UserSuspendedException $e)
{
    $time = $throttle->getSuspensionTime();

    echo "ユーザーは[$time]分間中断されます。";
}
catch (Cartalyst\Sentry\Throttling\UserBannedException $e)
{
    echo 'ユーザーは使用禁止です。';
}
});

7行目:loginメソッドは、第1引数にオブジェクトを指定します。第2引数はクッキーにユーザー情報を保存するかどうかを指定します。
※第2引数がtrueの場合は下記のように記述することができます。
Sentry::loginAndRemember($user);

ログアウト

4. ログアウトはログアウトメソッドを使用します。

Sentry::logout();

明日は、Sentryのコマンド(メソッド)一覧を調べて、整理してみたいと思います。本日は以上です。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

コメントをどうぞ

このページの先頭へ