ステートレスなBasic認証


 悩み事

Basic認証を用いた認証を利用したい

cookieやsessionは利用しないで行いたい

 解決方法

Auth::onceBasic()メソッドを利用します

Auth::basic()に変わって、ログイン状態にしますが、
基本的には現在のリクエストのみで認証済みの状態になります

引数を指定せずに利用した場合は、emailのフィールドを利用して認証します

$result = \Auth::onceBasic();
if ($result) {
    throw new \Exception('invalid credentials');
}

email以外のフィールドを利用する場合は、
第一引数でフィールド名を指定してください 

$result = \Auth::onceBasic('username');
if ($result) {
    throw new \Exception('invalid credentials');
}

リクエストの値を直接含める事も可能です

$result = \Auth::onceBasic('email', $request);

ただしくない認証情報が渡された場合は、
401 Invalid Credentials エラーが返却されます

 アドバイス

APIの認証等で利用されるケースが多いと思います

auth.apiフィルターとして実装する例です

Route::filter('auth.api', function() {
    return Auth::onceBasic();
});

APIなどでこのフィルターを利用する場合、
認証情報が正しくない場合は、401 Invalid Credentials エラーを返却しますが、
cookieやsessionで認証情報等を保存する事はありません


Author:Chuck Heintzelman

Editor and Translator:Yuuki Takezawa