Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 15478|Jawab: 0

[ASP.NET] Autentikasi pengguna dan peran berdasarkan FormsAuthentication

[Salin tautan]
Diposting pada 19/07/2018 17.31.14 | | |
Dalam keadaan normal, ketika kami melakukan manajemen hak akses, kami akan menyimpan informasi dasar pengguna setelah login yang benar dalam sesi, dan mendapatkannya setiap kali pengguna meminta data halaman atau antarmuka di masa mendatang

Sesi untuk melihat dan membandingkan apakah dia masuk dan apakah dia dapat mengakses halaman saat ini.

       Prinsip Session adalah menghasilkan SessionID di sisi server yang sesuai dengan data pengguna yang disimpan, dan SessionID disimpan dalam cookie, dan klien akan membawanya setiap kali diminta

Cookie, server menemukan data yang disimpan di sisi server berdasarkan ID sesi dalam cookie.

       FormsAuthentication disediakan oleh Microsoft untuk digunakan oleh kami pengembang untuk autentikasi. Melalui otentikasi ini, kami dapat menyimpan nama pengguna dan beberapa data pengguna dalam cookie,

Identitas dasar dan autentikasi peran dapat dengan mudah dicapai melalui pengaturan kondisi dasar.

       Efek yang akan dicapai di sini adalah menerapkan kontrol akses berbasis peran menggunakan Otorisasi yang disediakan sistem tanpa menggunakan keanggotaan.

1. Buat Tiket

Setelah pengguna masuk, ID pengguna dan peran yang sesuai (untuk beberapa peran, terpisah) disimpan dalam tiket.

Enkripsi tiket dengan FormsAuthentication.Encrypt.

Simpan tiket terenkripsi di cookie Respons (klien js tidak perlu membaca cookie ini, jadi sebaiknya atur HttpOnly=True untuk mencegah serangan browser mencuri dan memalsukan cookie). Dengan cara ini, Anda dapat membacanya dari cookie Permintaan lain kali.

Demo sederhana adalah sebagai berikut:


bool isPersistent, //apakah akan bertahan (diatur sesuai kebutuhan, jika diatur ke persistensi, pengaturan Kedaluwarsa cookie harus diatur saat mengirim cookie)

Parameter keenam FormsAuthenticationTicket menyimpan userData dari jenis string, di mana ID peran pengguna saat ini disimpan, dipisahkan oleh koma.

Saat masuk dengan nama pengguna "pengujian", cookie log muncul di klien


2. Dapatkan informasi sertifikasi

Setelah masuk, di halaman konten, kita dapat memperoleh informasi uname melalui User.Identity.Name permintaan saat ini, atau kita dapat mendekripsi cookie dalam permintaan untuk mendapatkan tiket, dan kemudian mendapatkan uname dan userData (yaitu, informasi ID peran yang disimpan sebelumnya) darinya.


3. Mewujudkan kontrol akses izin melalui atribut anotasi

Mengonfigurasi Aktifkan Autentikasi Formulir dan Manajemen Peran di web.config

Ketika kita menambahkan properti anotasi ke Controller dan Action, dari mana kita mendapatkan Role yang ditetapkan? Karena kami tidak menggunakan autentikasi berbasis Keanggotaan, kami juga akan membuat RoleProvider khusus. Namanya adalah CustomRoleProvider, yang diwarisi dari RoleProvider. Berikut adalah pembuatan file CustomRoleProvider.cs Anda sendiri di folder Helper di bawah MVCApp.

Ada banyak metode abstrak di RoleProvider, dan kami hanya mengimplementasikan metode GetRolesForUser untuk mendapatkan peran pengguna. Peran pengguna di sini dapat dikueri dari database sesuai dengan ID pengguna yang diperoleh, atau yang disimpan dalam sesi atau disimpan dalam cookie. Di sini saya sudah menyimpan peran di userData tiket, jadi mari kita dapatkan dari tiket.

Jika perlu, tambahkan atribut anotasi ke Pengontrol atau Tindakan yang divalidasi, misalnya, Tindakan ini hanya mengizinkan akses dengan RoleID 1 atau 2 atau 3, dan RoleID pengguna saat ini adalah (7, 1, 8), yang berarti pengguna memiliki hak untuk mengakses.

P.S. :1. Tiket disimpan pada waktu kedaluwarsa cookie, dan jika browser ditutup untuk mengingat tiket saat ini, parameter dapat diatur saat FormsAuthenticationTicket dibuat.

2. Akuisisi Role dapat dibaca langsung dari database tanpa disimpan di userData tiket, dan userData dapat menyimpan informasi lainnya.

3. Jika Anda ingin mengonfigurasi Peran Akses yang Diizinkan Pengontrol dan Action secara fleksibel, Anda dapat menyesuaikan metode OnAuthorization di penggantian AuthorizeAttribute, tempat metode tersebut digunakan

      Baca ID peran yang diizinkan di halaman saat ini dan periksa sesuai dengan ID Peran pengguna saat ini. Dengan cara ini, konfigurasi peran yang fleksibel direalisasikan.

            4. Informasi dalam tiket pada akhirnya disimpan dalam cookie, dan keamanannya masih atas kebijaksanaan Anda sendiri, saya pribadi berpikir lebih baik untuk menyimpan UserID dan RoleID dalam sesi.





Mantan:Peta Baidu: Selesaikan solusi lag penanda agregasi titik
Depan:Rekrut mitra teknis
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com