Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Saat menggunakan cookie autentikasi, titik akhir API mengembalikan kode status HTTP yang sesuai (seperti 401 atau 403) untuk kegagalan autentikasi alih-alih mengalihkan permintaan yang tidak diautentikasi ke halaman masuk. Perilaku ini, yang lebih cocok untuk akses API terprogram, diperkenalkan di ASP.NET Core di .NET 10.
Cara ASP.NET Core mengidentifikasi titik akhir API
ASP.NET Core secara otomatis menerapkan perilaku ini ke titik akhir yang dikenalinya sebagai terkait API, termasuk:
- Pengontrol yang didekorasi dengan
[ApiController]atribut - Titik akhir API minimal yang terdaftar dengan
MapGet, ,MapPostMapPut,MapDelete, dll. - Titik akhir yang secara eksplisit meminta respons JSON
- SignalR hub dan titik akhir
Perilaku dan kustomisasi default
Secara default, ASP.NET Core menerapkan cookie logika autentikasi berdasarkan jenis titik akhir:
- Halaman web: Mengalihkan ke halaman masuk
- Titik akhir API: Mengembalikan kode status 401 atau 403 tanpa pengalihan
Mengonfigurasi perilaku
Meskipun perilaku default berfungsi untuk sebagian besar skenario, perilaku tersebut dapat disesuaikan jika diperlukan:
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Account/Login";
// The framework automatically handles API endpoints
// No additional configuration needed
});
Jika Anda perlu mengambil alih deteksi otomatis untuk titik akhir tertentu, gunakan [Authorize] atribut dengan skema autentikasi tertentu atau terapkan penangan autentikasi kustom.
Pertimbangan migrasi
Perubahan perilaku yang diperkenalkan dalam .NET 10 ini dirancang agar tidak melanggar untuk aplikasi yang ada:
- Aplikasi web: Terus bekerja seperti sebelumnya dengan pengalihan halaman masuk
- Aplikasi campuran: Titik akhir API mendapatkan kode status yang tepat saat halaman web mendapatkan pengalihan
- Aplikasi khusus API: Manfaatkan kode status HTTP yang tepat tanpa konfigurasi tambahan
Menguji titik akhir API Anda
Setelah meningkatkan ke ASP.NET Core 10, verifikasi bahwa titik akhir API Anda mengembalikan kode status yang sesuai:
[Test]
public async Task UnauthorizedApiRequest_Returns401()
{
var response = await client.GetAsync("/api/secure-data");
Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
Assert.False(response.Headers.Location != null); // No redirect
}
Topik terkait
ASP.NET Core