Yii2とAngular 2クライアントでRESTサービスを開発しました。ベアラJWT認証の使用。 たとえば、uri:http://127.0.0.1/v1/accounts/123456/metersがあり、自分が所有するアカウントですべてのユーザーのメーターを返す必要があります。認証されたユーザーがRESTレスポンスのハンドラであるかどうかを確認する方法
アプライド・ルータのルール:(
public function actionMeters($accountId)
{
// Call MS SQL procedure
$meters = Yii::$app->db->createCommand("EXEC [getMetersByAccountId] :accountId")->bindValue(':accountId', $accountId)->queryAll()
return $meters;
}
をしかし、この方法で認証されたユーザーが得ることができます見えます
'authenticator' => [
'class' => HttpBearerAuth::className(),
'except' => ['options']
],
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'allow' => true,
'actions' => ['meters'],
'roles' => ['@'],
]
]
]
アクションAccountController :: actionMeters:
'<accountId:\w+>/<action:[\w-]+>' => '<action>',
コントローラは以下の動作を持っていますGET accountIdパラメータを変更した場合)のメーターを表示します。
ユーザーとアカウントをリンクするデータベースにuser_accountテーブルがありますが、アプリケーションのどの場所に正しくチェックする必要があるかわかりません。
認証されたユーザーが指定したaccountIdパラメータでこのリソースにアクセスできるかどうかを確認する方法はありますか。 ありがとうございます。