私のAPIには、現在登録されているすべてのユーザーの詳細(アドレスなど)を現在表示する/ usersエンドポイントがあります。これは(Ember)アプリケーションからアクセスする必要があります(たとえば、ユーザーの配送先住所を表示するため)が、明らかな理由で、誰もがデータを表示できないようにすることはできません(閲覧可能なAPIを介して、またはプレーンJSONとして)ビューをJSONRendererのみを使用するように制限します)。アプリケーションは最初にフロントエンドアプリ(トークンベースの認証を使用しています)からユーザーにログインする必要があるため、認証とアクセス許可を使用できないと思います。たとえば、Djangoのユーザービューで認証を使用すると、Emberからログインできません。
私は何かが足りないのですか?
更新
こんにちは、私はこれに戻りたいと思いました。
Ember側の認証には、DjangoでEmber SimpleAuthとトークンベースの認証を使用しています。すべて正常に機能しています。Emberアプリにログインして、トークンにアクセスできます。
私ができる必要があるのは、ユーザーにアクセスすることです。このために、私はここのコードサンプルに従いましたhttps://github.com/simplabs/ember-simple-auth/blob/master/guides/managing-current-user.md
ログインしたユーザーのトークンを使用して、Postmanでトークンベースの認証をテストしました。/usersエンドポイントにアクセスできます。(これはすべてのユーザーを返します-私が欲しいのは、私がトークンを返すユーザーだけのためですが、それは後でです!)
問題は、Emberリクエストで(トークン)ヘッダーを渡す方法です。
this.store.findAll('user') .... etc
これは明らかに現在発生しておらず、これを修正する方法がわかりません。
更新
修正しました。アプリケーションアダプタの承認関数がヘッダーを設定していなかったことが判明したため、ヘッダーを明示的に設定するようにコードを変更しました。
authorize(xhr) {
let { access_token } = this.get('session.data.authenticated');
if (isPresent(access_token)) {
xhr.setRequestHeader('Authorization', `Token ${access_token}`);
}
},
headers: computed('session.data.authenticated.token', function () {
const headers = {};
if (this.session.isAuthenticated) {
headers['Authorization'] = `Token ${this.session.data.authenticated.token}`
}
return headers;
})
EmberはSPAを作成するためのフレームワークです。これらはブラウザで実行されます。したがって、Emberがデータを取得するには、データをブラウザに送信する必要があります。
ブラウザは完全にユーザーの管理下にあります。ブラウザは、ウェブサイトの所有者ではなく、彼らのために機能するソフトウェアです。
ブラウザに送信するデータはすべて、ユーザーがアクセスできます。終止符。
ユーザーがAPIから読み取ることができるデータのビットを制限する場合は、サーバー側でそれらの制限を適用するロジックを記述し、クライアント側のEmberコードに依存せずにビットを除外する必要があります。ユーザーに見てもらいたい。
アプリケーションは最初にフロントエンドアプリ(トークンベースの認証を使用しています)からユーザーにログインする必要があるため、認証とアクセス許可を使用できないと思います。たとえば、Djangoのユーザービューで認証を使用すると、Emberからログインできません。
これは本当に意味がありません。
通常、これは発生するはずです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加