Saat ini saya menghias metode seperti ini untuk memungkinkan "anggota" mengakses tindakan pengontrol saya
[Authorize(Roles="members")]
Bagaimana cara saya mengizinkan lebih dari satu peran? Misalnya, berikut ini tidak berfungsi tetapi ini menunjukkan apa yang saya coba lakukan (izinkan akses "anggota" dan "admin"):
[Authorize(Roles="members", "admin")]
asp.net-mvc
controller
roles
codette
sumber
sumber
Jawaban:
Pilihan lain adalah menggunakan filter otorisasi tunggal saat Anda memposting tetapi menghapus kutipan dalam.
sumber
Jika Anda ingin menggunakan peran khusus, Anda dapat melakukan ini:
CustomRoles
kelas:Pemakaian
Jika Anda memiliki sedikit peran, mungkin Anda dapat menggabungkannya (untuk kejelasan) seperti ini:
Pemakaian
sumber
Salah satu kemungkinan penyederhanaan adalah dengan subkelas
AuthorizeAttribute
:Pemakaian:
Secara semantik itu sama dengan jawaban Jim Schmehil.
sumber
Untuk MVC4, menggunakan a
Enum
(UserRoles
) dengan peran saya, saya menggunakan kebiasaanAuthorizeAttribute
.Pada tindakan terkontrol saya, saya lakukan:
Dan saya menggunakan kebiasaan
AuthorizeAttribute
seperti itu:Ini adalah bagian dari FNHMVC yang dimodifikasi oleh Fabricio Martínez Tamayo https://github.com/fabriciomrtnz/FNHMVC/
sumber
Solusi lain yang jelas, Anda dapat menggunakan konstanta untuk menjaga konvensi dan menambahkan beberapa atribut [Otorisasi]. Lihat ini:
Kemudian di controller:
sumber
Authorize
atribut menggunakan DAN semantik dan mengharuskan SEMUA kondisi dipenuhi (yaitu pengguna harus berada dalam peran Administrator dan Tamu).Jika Anda sering menerapkan 2 peran tersebut, Anda dapat membungkusnya dalam Otorisasi mereka sendiri. Ini benar-benar perpanjangan dari jawaban yang diterima.
Dan kemudian terapkan otorisasi baru Anda ke Action. Saya pikir ini terlihat lebih bersih dan mudah dibaca.
sumber
Kode yang lebih baik dengan menambahkan subkelas
AuthorizeRole.cs
Cara menggunakan ini
sumber
Menggunakan AspNetCore 2.x, Anda harus sedikit berbeda:
gunakan saja seperti ini:
sumber
sumber