5
JWTベースの認証でファイルのダウンロードを処理する方法
私はAngularでWebアプリケーションを作成していますが、認証はJWTトークンによって処理されます。つまり、すべてのリクエストには、必要なすべての情報を含む「Authentication」ヘッダーがあります。 これはREST呼び出しではうまく機能しますが、バックエンドでホストされているファイル(Webサービスがホストされているのと同じサーバー上にあるファイル)のダウンロードリンクをどのように処理すればよいかわかりません。 <a href='...'/>ヘッダーが含まれておらず、認証が失敗するため、通常のリンクを使用できません。のさまざまな呪文についても同じですwindow.open(...)。 私が考えたいくつかの解決策: サーバー上に一時的な安全でないダウンロードリンクを生成する 認証情報をurlパラメータとして渡し、ケースを手動で処理します XHRを介してデータを取得し、ファイルクライアント側に保存します。 上記のすべてが満足できるものではありません。 1は現在使用しているソリューションです。2つの理由で私はそれが好きではありません。1つ目はセキュリティ面で理想的ではない、2つ目は機能しますが、特にサーバーでかなりの作業が必要です。何かをダウンロードするには、新しい「ランダム」を生成するサービスを呼び出す必要があります"url、それをしばらくの間(おそらくDBに)保存し、クライアントに返します。クライアントはURLを取得し、window.openなどを使用します。リクエストされた場合、新しいURLはそれがまだ有効かどうかを確認してから、データを返す必要があります。 2は、少なくとも同じくらいの作業です。 3は、利用可能なライブラリを使用していても、多くの作業と多くの潜在的な問題のようです。(自分のダウンロードステータスバーを用意し、ファイル全体をメモリに読み込んでから、ユーザーにファイルをローカルに保存するよう依頼する必要があります)。 タスクはかなり基本的なもののように思えるので、もっと簡単に使えるものが他にあるかどうか疑問に思っています。 私は必ずしも「Angular way」の解決策を探しているわけではありません。通常のJavascriptで問題ありません。
116
javascript
angularjs
jwt