Saya memiliki situs MVC webapi yang menggunakan otentikasi OAuth / token untuk mengotentikasi permintaan. Semua pengontrol yang relevan memiliki atribut yang benar, dan otentikasi berfungsi dengan baik.
Masalahnya adalah tidak semua permintaan dapat diotorisasi dalam cakupan atribut - beberapa pemeriksaan otorisasi harus dilakukan dalam kode yang dipanggil oleh metode pengontrol - apa cara yang benar untuk mengembalikan respons 401 tidak sah dalam kasus ini?
Saya telah mencoba throw new HttpException(401, "Unauthorized access");
, tetapi ketika saya melakukan ini, kode status respons adalah 500 dan saya juga mendapatkan jejak tumpukan. Bahkan dalam pendataan DelegatingHandler, kita dapat melihat bahwa responnya adalah 500, bukan 401.
HttpResponseException
versus kapan harus mengembalikanUnauthorized()
. Menggunakan pengecualian untuk kesalahan 'yang diharapkan' adalah sedikit anti-pola, jadi jika ada kasus Anda mengharapkan panggilan membuat kesalahan ini, kembaliUnauthorized()
mungkin adalah panggilan yang tepat. SimpanHttpResponseException
untuk hal yang benar-benar tidak terduga.