Razor Konvensi otorisasi Halaman di ASP.NET Core
Salah satu cara untuk mengontrol akses di aplikasi Pages Anda Razor adalah dengan menggunakan konvensi otorisasi saat startup. Konvensi ini memungkinkan Anda untuk mengotorisasi pengguna dan mengizinkan pengguna anonim untuk mengakses halaman atau folder halaman individual. Konvensi yang dijelaskan dalam topik ini secara otomatis menerapkan filter otorisasi untuk mengontrol akses.
Melihat atau mengunduh kode sampel (cara mengunduh)
Aplikasi sampel menggunakan cookie autentikasi tanpa ASP.NET Core Identity. Konsep dan contoh yang ditampilkan dalam topik ini berlaku sama untuk aplikasi yang menggunakan ASP.NET Core Identity. Untuk menggunakan ASP.NET Core Identity, ikuti panduan dalam Pengenalan Identity di ASP.NET Core.
Memerlukan otorisasi untuk mengakses halaman
AuthorizePage Gunakan konvensi untuk menambahkan AuthorizeFilter ke halaman di jalur yang ditentukan:
services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
Jalur yang ditentukan adalah jalur Lihat Mesin, yang merupakan Razor jalur relatif akar Halaman tanpa ekstensi dan hanya berisi garis miring ke depan.
Untuk menentukan kebijakan otorisasi, gunakan kelebihan beban AuthorizePage:
options.Conventions.AuthorizePage("/Contact", "AtLeast21");
Catatan
Dapat AuthorizeFilter diterapkan ke kelas model halaman dengan [Authorize]
atribut filter. Untuk informasi selengkapnya, lihat Mengotorisasi atribut filter.
Memerlukan otorisasi untuk mengakses folder halaman
AuthorizeFolder Gunakan konvensi untuk menambahkan AuthorizeFilter ke semua halaman dalam folder di jalur yang ditentukan:
services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
Jalur yang ditentukan adalah jalur Lihat Mesin, yang merupakan Razor jalur relatif akar Halaman.
Untuk menentukan kebijakan otorisasi, gunakan kelebihan beban AuthorizeFolder:
options.Conventions.AuthorizeFolder("/Private", "AtLeast21");
Memerlukan otorisasi untuk mengakses halaman area
AuthorizeAreaPage Gunakan konvensi untuk menambahkan AuthorizeFilter ke halaman area di jalur yang ditentukan:
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts");
Nama halaman adalah jalur file tanpa ekstensi yang relatif terhadap direktori akar halaman untuk area yang ditentukan. Misalnya, nama halaman untuk file Areas/Identity/Pages/Manage/Accounts.cshtml
adalah /Kelola/Akun.
Untuk menentukan kebijakan otorisasi, gunakan overload AuthorizeAreaPage:
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts", "AtLeast21");
Memerlukan otorisasi untuk mengakses folder area
AuthorizeAreaFolder Gunakan konvensi untuk menambahkan AuthorizeFilter ke semua area dalam folder di jalur yang ditentukan:
options.Conventions.AuthorizeAreaFolder("Identity", "/Manage");
Jalur folder adalah jalur folder relatif terhadap direktori akar halaman untuk area yang ditentukan. Misalnya, jalur folder untuk file di bawah Area/Identity/Halaman/Kelola/ adalah /Kelola.
Untuk menentukan kebijakan otorisasi, gunakan kelebihan beban AuthorizeAreaFolder:
options.Conventions.AuthorizeAreaFolder("Identity", "/Manage", "AtLeast21");
Perbolehkan akses anonim ke halaman
AllowAnonymousToPage Gunakan konvensi untuk menambahkan AllowAnonymousFilter ke halaman di jalur yang ditentukan:
services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
Jalur yang ditentukan adalah jalur Lihat Mesin, yang merupakan Razor jalur relatif akar Halaman tanpa ekstensi dan hanya berisi garis miring ke depan.
Perbolehkan akses anonim ke folder halaman
AllowAnonymousToFolder Gunakan konvensi untuk menambahkan AllowAnonymousFilter ke semua halaman dalam folder di jalur yang ditentukan:
services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
Jalur yang ditentukan adalah jalur Lihat Mesin, yang merupakan Razor jalur relatif akar Halaman.
Catatan tentang menggabungkan akses resmi dan anonim
Valid untuk menentukan bahwa folder halaman memerlukan otorisasi lalu menentukan bahwa halaman dalam folder tersebut memungkinkan akses anonim:
// This works.
.AuthorizeFolder("/Private").AllowAnonymousToPage("/Private/Public")
Sebaliknya, bagaimanapun, tidak valid. Anda tidak dapat mendeklarasikan folder halaman untuk akses anonim lalu menentukan halaman dalam folder tersebut yang memerlukan otorisasi:
// This doesn't work!
.AllowAnonymousToFolder("/Public").AuthorizePage("/Public/Private")
Memerlukan otorisasi pada halaman Privat gagal. Ketika dan AllowAnonymousFilterAuthorizeFilter diterapkan ke halaman, AllowAnonymousFilter yang diutamakan dan mengontrol akses.
Sumber Daya Tambahan:
Salah satu cara untuk mengontrol akses di aplikasi Pages Anda Razor adalah dengan menggunakan konvensi otorisasi saat startup. Konvensi ini memungkinkan Anda untuk mengotorisasi pengguna dan mengizinkan pengguna anonim untuk mengakses halaman atau folder halaman individual. Konvensi yang dijelaskan dalam topik ini secara otomatis menerapkan filter otorisasi untuk mengontrol akses.
Melihat atau mengunduh kode sampel (cara mengunduh)
Aplikasi sampel menggunakan cookie autentikasi tanpa ASP.NET Core Identity. Konsep dan contoh yang ditampilkan dalam topik ini berlaku sama untuk aplikasi yang menggunakan ASP.NET Core Identity. Untuk menggunakan ASP.NET Core Identity, ikuti panduan dalam Pengenalan Identity di ASP.NET Core.
Memerlukan otorisasi untuk mengakses halaman
AuthorizePage Gunakan konvensi melalui AddRazorPagesOptions untuk menambahkan AuthorizeFilter ke halaman di jalur yang ditentukan:
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
Jalur yang ditentukan adalah jalur Lihat Mesin, yang merupakan Razor jalur relatif akar Halaman tanpa ekstensi dan hanya berisi garis miring ke depan.
Untuk menentukan kebijakan otorisasi, gunakan kelebihan beban AuthorizePage:
options.Conventions.AuthorizePage("/Contact", "AtLeast21");
Catatan
Dapat AuthorizeFilter diterapkan ke kelas model halaman dengan [Authorize]
atribut filter. Untuk informasi selengkapnya, lihat Mengotorisasi atribut filter.
Memerlukan otorisasi untuk mengakses folder halaman
AuthorizeFolder Gunakan konvensi melalui AddRazorPagesOptions untuk menambahkan AuthorizeFilter ke semua halaman dalam folder di jalur yang ditentukan:
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
Jalur yang ditentukan adalah jalur Lihat Mesin, yang merupakan Razor jalur relatif akar Halaman.
Untuk menentukan kebijakan otorisasi, gunakan kelebihan beban AuthorizeFolder:
options.Conventions.AuthorizeFolder("/Private", "AtLeast21");
Memerlukan otorisasi untuk mengakses halaman area
AuthorizeAreaPage Gunakan konvensi melalui AddRazorPagesOptions untuk menambahkan AuthorizeFilter ke halaman area di jalur yang ditentukan:
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts");
Nama halaman adalah jalur file tanpa ekstensi yang relatif terhadap direktori akar halaman untuk area yang ditentukan. Misalnya, nama halaman untuk file Areas/Identity/Pages/Manage/Accounts.cshtml
adalah /Kelola/Akun.
Untuk menentukan kebijakan otorisasi, gunakan overload AuthorizeAreaPage:
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts", "AtLeast21");
Memerlukan otorisasi untuk mengakses folder area
AuthorizeAreaFolder Gunakan konvensi melalui AddRazorPagesOptions untuk menambahkan AuthorizeFilter ke semua area dalam folder di jalur yang ditentukan:
options.Conventions.AuthorizeAreaFolder("Identity", "/Manage");
Jalur folder adalah jalur folder relatif terhadap direktori akar halaman untuk area yang ditentukan. Misalnya, jalur folder untuk file di bawah Area/Identity/Halaman/Kelola/ adalah /Kelola.
Untuk menentukan kebijakan otorisasi, gunakan kelebihan beban AuthorizeAreaFolder:
options.Conventions.AuthorizeAreaFolder("Identity", "/Manage", "AtLeast21");
Perbolehkan akses anonim ke halaman
AllowAnonymousToPage Gunakan konvensi melalui AddRazorPagesOptions untuk menambahkan AllowAnonymousFilter ke halaman di jalur yang ditentukan:
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
Jalur yang ditentukan adalah jalur Lihat Mesin, yang merupakan Razor jalur relatif akar Halaman tanpa ekstensi dan hanya berisi garis miring ke depan.
Perbolehkan akses anonim ke folder halaman
AllowAnonymousToFolder Gunakan konvensi melalui AddRazorPagesOptions untuk menambahkan AllowAnonymousFilter ke semua halaman dalam folder di jalur yang ditentukan:
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
Jalur yang ditentukan adalah jalur Lihat Mesin, yang merupakan Razor jalur relatif akar Halaman.
Catatan tentang menggabungkan akses resmi dan anonim
Valid untuk menentukan bahwa folder halaman yang memerlukan otorisasi dan daripada menentukan bahwa halaman dalam folder tersebut memungkinkan akses anonim:
// This works.
.AuthorizeFolder("/Private").AllowAnonymousToPage("/Private/Public")
Sebaliknya, bagaimanapun, tidak valid. Anda tidak dapat mendeklarasikan folder halaman untuk akses anonim lalu menentukan halaman dalam folder tersebut yang memerlukan otorisasi:
// This doesn't work!
.AllowAnonymousToFolder("/Public").AuthorizePage("/Public/Private")
Memerlukan otorisasi pada halaman Privat gagal. Ketika dan AllowAnonymousFilterAuthorizeFilter diterapkan ke halaman, AllowAnonymousFilter yang diutamakan dan mengontrol akses.
Sumber Daya Tambahan:
ASP.NET Core
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk