2017-10-24 5 views
4

Gatsbyを使用して静的生成サイトを作成したいと考えています。これはすべて問題ありませんが、内部のサイトであるため、認証と認可を取得したいと考えています。これは私の会社の人がアクセスする必要があります。私はこれについて考えていましたが、何らかのサーバーコンポーネントがなければ、何らかのバックエンドなしでユーザーを安全に認証することは不可能です(?)。私は、ASP.NETコアを使用して静的ファイルを提供し、これらの静的ファイルの前でGoogle(Work用)認証と承認を取得できると考えました。Google認証の背後にある静的ファイルを配信する

公然とアクセス可能な静的ファイルの提供にのみ責任があるため、StaticFileHandlerdoesn't support authorization by designのように見えます。私はrootアクション( '/'を聞きます)のAuthorize属性を使用してGoogle認証を働かせて、Challengeを発行したログインアクションを持っており、ユーザーは認証のためにGoogleにリダイレクトされます。静的ファイルを処理するためのドキュメントの詳細は、次のとおりです。

静的ファイルモジュールは権限チェックを行いません。 wwwrootの下にあるファイルを含む、それによって提供されるファイルはすべて公開されています。承認に基づいてファイルを提供するには、次の

  • ストアそれらwwwrootにし、静的ファイルミドルウェアにアクセス可能な任意のディレクトリと
  • 、コントローラのアクションを介してそれらをサーブ許可が適用されFileResultを返すの外側

[Authorize] 
public IActionResult Index() 
{ 
    // TODO: Return static files based on incoming requested path. 
    return View(); 
} 

は、だから今、私はこのようになります私のHomeControllerIndex作用を有します0

私はこの解決策に満足していません。 MVCを使用する代わりにミドルウェアですべてを動作させる必要がありますか?これは正しいことですか?これを行うためのより良い方法はありますか?

答えて

0

Gatsbyは、静的コンテンツのフォルダを作成します。このフォルダには、承認の概念はありません。

私はあなたが別の層で認証を処理する必要があると思います。たとえば、単純な基本認証ヘッダー要件をWebサーバーレイヤーに追加することができます。これは、nginxやapacheでは些細なことでしょう。

Gatsbyプロジェクトへの認証は、静的なサイトの目的を無効にするか、コンテンツがJSONファイルとして一般公開されていることを意味しますが、Reactアプリケーションは、何らかの認可要件が満たされていない限り)。

関連する問題