servicesおよびrest_serverモジュール(およびRESTful API全体)は初めてです。しかし、私が理解しているように、手順は基本的に次のとおりです。
- データに設定されたユーザー名とパスワードを使用して/ api / user / loginに投稿リクエストを送信します
- 取得したトークンを応答に格納します
- 後続のpostリクエストで、キーX-CSRF-TOKENを使用してトークンをヘッダーに追加します
Postman Chrome拡張機能を使用してそれを実行すると、うまく機能します。コードでそれを行うと、api / user / loginは正常に実行され、トークンを取得しますが、/ api / other / endpointにアクセスしようとすると、ユーザーの匿名エラーにより403 Access deniedが返されます。
最初のリクエスト(/ user / login)は次のようになります:
POST /api/user/login HTTP/1.0
Content-Type: application/json
Accept: application/json
User-Agent: Drupal (+http://drupal.org/)
Host: mysiteurl.com
Content-Length: 41
{"username":"NAME","password":"PASSWORD"}
そして、2番目のリクエスト(/ other / endpoint)は次のようになります。
POST /api/other/endpoint HTTP/1.0
Content-Type: application/json
Accept: application/json
X-CSRF-TOKEN: vGJm5GNDGumf-SoHnLsBU6d46EkrOZkvUY0CSa08GA0
User-Agent: Drupal (+http://drupal.org/)
Host: mysiteurl.com
Content-Length: 0
認証後に/ user / tokenにリクエストを行うと、毎回新しいトークンを取得します。ログインしてすぐにログアウトしようとすると(そしてそのトークンを一緒に送信すると)、「406 Not Acceptable:User not not login。」というメッセージが表示されます。エラー。ユーザーがログインしていないことがわかります。
サイトを確認すると、ユーザーが正常にログインし、その後もログインしていることが表示されます。
セッション名/ IDまたはCookieに関して何かを保存/送信する必要がありますか?私が見てきたことはすべて、セッショントークンのみが必要であることを示唆しています。
Session authentication
アンダーを有効にadmin/structure/services/list/[my-endpoint]
してすべてのキャッシュをクリアしましたか?