FuelPHPのRestコントローラでbeforeメソッドでレスポンスを返却したい。
RestAPIを使用したアプリケーションをFuelPHPで開発しようとしています。
Restコントローラを継承するcontroller\base.phpを作成し、
初期処理はここに書こうとしています。
ここでやりたいことは
beforeメソッド内で、tokenが一致しているかを確認したいです。
<?php
namespace Controller;
class Base extends \Controller_Rest {
protected $format = 'json';
/* HTTPステータスコード */
protected $Unauthorized = 401;
/**
* 初期処理
*/
public function before()
{
parent::before();
/* Tokenを確認する */
$token = '';
if (\Input::method() === 'GET' || \Input::method() === 'POST') {
$token = \Input::param('token');
}
if (! self::is_token_matched($token)) {
// 不正なアクセス
return $this->response(
[
'message' => 'トークンが不正です',
],
$this->Unauthorized
);
}
}
}
このソースコードでToken不一致の場合を試すと、
エラーメッセージと401のステータスコードが返されることを期待しているのですが、
実際は、それが子クラスのAPIが呼ばれてしまいます。
下記のような実装も試しましたが、期待していた動作になりませんでした。
if (! self::is_token_matched($token)) {
// 不正なアクセス
$this->response(
[
'message' => 'トークンが不正です',
],
$this->Unauthorized
);
exit;
}
if (! self::is_token_matched($token)) {
// 不正なアクセス
$this->response(
[
'message' => 'トークンが不正です',
],
$this->Unauthorized
);
return;
}
beforeメソッドでレスポンスを返却するやりかたをご存知の方がいらっしゃいましたら、
ご教授いただけると幸いです。