Share via


CodeAccessPermission.PermitOnly Metode

Definisi

Mencegah penelepon yang lebih tinggi dalam tumpukan panggilan menggunakan kode yang memanggil metode ini untuk mengakses semua sumber daya kecuali untuk sumber daya yang ditentukan oleh instans saat ini.

public:
 virtual void PermitOnly();
public void PermitOnly ();
abstract member PermitOnly : unit -> unit
override this.PermitOnly : unit -> unit
Public Sub PermitOnly ()

Penerapan

Pengecualian

Sudah ada yang aktif PermitOnly() untuk bingkai saat ini.

Keterangan

Penting

Metode PermitOnly ini harus digunakan hanya untuk melindungi sumber daya dari akses yang tidak disengaja dengan kode yang sepenuhnya tepercaya. Ini tidak boleh digunakan untuk melindungi sumber daya dari penyalahgunaan yang disengaja oleh kode yang tidak tepercaya. Misalnya, jika metode A mengeluarkan PermitOnly untuk izin dan kemudian memanggil metode B, metode B dapat mengesampingkan PermitOnlyAssertsecara berlebihan dengan mengeluarkan . Metode yang dipanggil selalu lebih tinggi dalam tumpukan. Oleh karena itu, jika metode B mencoba mengakses sumber daya yang dilindungi, sistem keamanan mulai memeriksa izin dengannya karena metode B adalah pemanggil langsung, dan kemudian berjalan menumpuk untuk mengonfirmasi bahwa tidak Deny ada atau PermitOnly lebih rendah dalam tumpukan. Metode B, yang mencoba mengakses sumber daya, dapat segera menghentikan tumpukan berjalan dengan menggunakan Assert metode . Dalam hal ini, yang PermitOnly ditempatkan pada tumpukan menurut metode A (metode pemanggilan) tidak pernah ditemukan.

PermitOnly mirip Denydengan , karena keduanya menyebabkan stack berjalan gagal ketika mereka akan berhasil. Perbedaannya adalah menentukan Deny izin yang akan menyebabkan stack walk gagal, tetapi PermitOnly menentukan satu-satunya izin yang tidak menyebabkan stack walk gagal.

Panggil metode ini untuk memastikan bahwa kode Anda hanya dapat digunakan untuk mengakses sumber daya yang ditentukan. Panggilan ke PermitOnly efektif sampai kode panggilan kembali ke pemanggilnya. Hanya satu PermitOnly yang dapat aktif pada bingkai. Upaya untuk memanggil PermitOnly ketika ada aktif PermitOnly pada bingkai menghasilkan SecurityException. Panggil RevertPermitOnly atau RevertAll untuk menghapus yang aktif PermitOnly.

PermitOnly diabaikan untuk izin yang tidak diberikan karena permintaan izin tersebut tidak akan berhasil. Namun, jika kode yang lebih rendah pada tumpukan panggilan nanti memanggil Demand izin tersebut, dilemparkan SecurityException ketika stack walk mencapai kode yang mencoba memanggil PermitOnly. Ini karena kode yang disebut PermitOnly belum diberikan izin, meskipun meminta PermitOnly izin tersebut. Tumpukan panggilan biasanya direpresentasikan sebagai tumbuh ke bawah, sehingga metode yang lebih tinggi dalam metode panggilan tumpukan panggilan lebih rendah di tumpukan panggilan.

Catatan Bagi Inheritor

Anda tidak dapat mengambil alih metode ini.

Berlaku untuk