【ASP.NET Core Web】特定の静的ファイルに認証無しでアクセスできるようにする

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【ASP.NET Core Web】特定の静的ファイルに認証無しでアクセスできるようにする

2024-3-19 |

.NET 8のASP.NET Core Webで特定の静的ファイルに認証無しでアクセスできるようにしたい!

概要

今回の記事では、.NET 8のASP.NET Core Webで特定の静的ファイルに認証無しでアクセスできるようにする手順を掲載する。

仕様書

環境

  • .NET 8.0

手順書

UseStaticFiles()を使わず静的ファイルへのアクセスを許可してない場合、または、UseAuthentication()の後にUseStaticFiles()を使って特定のディレクトリの静的ファイルのみへのアクセスを許可してる場合に特定の静的ファイルにアクセスできるように設定したい。

下記はwwwroot/favicon.icoに認証無しでアクセスできるように設定する例。

namespace StaticFileSample
{
    public class Program
    {
        public static void Main(string[] args)
        {
            ...

            var app = builder.Build();

            ...

            app.MapGet("/favicon.ico", async context =>
            {
                var filePath = Path.Combine(app.Environment.WebRootPath, "favicon.ico");

                if (File.Exists(filePath))
                {
                    context.Response.ContentType = "image/x-icon";
                    await context.Response.SendFileAsync(filePath);
                }
                else
                {
                    context.Response.StatusCode = 404;
                }
            }).AllowAnonymous();

            ...
        }
    }
}

まとめ(感想文)

アクセス権限って難しいと思う今日この頃。