Permata CanCan tidak lagi dipertahankan . Silakan gunakan perpustakaan otorisasi lain seperti CanCanCan atau Pundit.
<img src=“https://fury-badge.herokuapp.com/rb/cancan.png” alt=“Versi Permata” /> <img src=“https://secure.travis-ci.org/ryanb/ cancan.png?branch=master” /> <img src=“https://codeclimate.com/github/ryanb/cancan.png” />
Wiki | RDocs | Siaran layar
CanCan adalah perpustakaan otorisasi untuk Ruby on Rails yang membatasi sumber daya apa yang boleh diakses oleh pengguna tertentu. Semua izin ditentukan di satu lokasi (kelas Ability
) dan tidak diduplikasi di seluruh pengontrol, tampilan, dan kueri database.
Di Rails 3 , tambahkan ini ke Gemfile Anda dan jalankan perintah bundle
.
permata "bisa bisa"
Di Rails 2 , tambahkan ini ke file environment.rb Anda.
konfigurasi . permata "bisa bisa"
Alternatifnya, Anda dapat menginstalnya sebagai plugin.
instal plugin Rails git://github.com/ryanb/cancan.git
CanCan mengharapkan metode current_user
ada di pengontrol. Pertama, siapkan beberapa autentikasi (seperti Authlogic atau Devise). Lihat Mengubah Default jika Anda memerlukan perilaku berbeda.
Izin pengguna ditentukan dalam kelas Ability
. CanCan 1.5 menyertakan generator Rails 3 untuk membuat kelas ini.
rails g cancan: kemampuan
Di Rails 2.3, cukup tambahkan kelas baru di 'app/models/ability.rb` dengan konten berikut:
Kemampuan kelas termasuk CanCan :: Kemampuan def inisialisasi ( pengguna ) akhir akhir
Lihat Mendefinisikan Kemampuan untuk detailnya.
Izin pengguna saat ini kemudian dapat diperiksa menggunakan can?
dan cannot?
metode dalam tampilan dan pengontrol.
<% jika bisa? :perbarui, @artikel %> <%= link_to "Sunting", edit_jalur_artikel(@artikel) %> <% akhir %>
Lihat Memeriksa Kemampuan untuk informasi lebih lanjut
authorize!
metode di pengontrol akan memunculkan pengecualian jika pengguna tidak dapat melakukan tindakan yang diberikan.
pasti pertunjukan @artikel = Artikel . temukan ( params [ :id ]) mengizinkan! :baca , @artikel akhir
Menyetel ini untuk setiap tindakan bisa jadi membosankan, oleh karena itu metode load_and_authorize_resource
disediakan untuk secara otomatis mengotorisasi semua tindakan dalam pengontrol sumber daya gaya RESTful. Ini akan menggunakan filter sebelum untuk memuat sumber daya ke dalam variabel instan dan mengotorisasinya untuk setiap tindakan.
kelas ArticlesController < ApplicationController memuat_dan_mengotorisasi_sumber daya pasti pertunjukan # @artikel sudah dimuat dan diotorisasi akhir akhir
Lihat Mengotorisasi Tindakan Pengontrol untuk informasi lebih lanjut.
Jika otorisasi pengguna gagal, pengecualian CanCan::AccessDenied
akan dimunculkan. Anda dapat menangkap ini dan mengubah perilakunya di ApplicationController
.
kelas ApplicationController < ActionController :: Basis penyelamatan_dari CanCan :: AccessDenied lakukan | pengecualian | redirect_to root_url , :alert => pengecualian . pesan akhir akhir
Lihat Penanganan Pengecualian untuk informasi lebih lanjut.
Jika Anda ingin memastikan otorisasi terjadi pada setiap tindakan di aplikasi Anda, tambahkan check_authorization
ke ApplicationController Anda.
kelas ApplicationController < ActionController :: Basis check_otorisasi akhir
Hal ini akan menimbulkan pengecualian jika otorisasi tidak dilakukan dalam suatu tindakan. Jika Anda ingin melewati ini, tambahkan skip_authorization_check
ke subkelas pengontrol. Lihat Pastikan Otorisasi untuk informasi lebih lanjut.
Meningkatkan ke 1.6
Mendefinisikan Kemampuan
Memeriksa Kemampuan
Mengotorisasi Tindakan Pengontrol
Penanganan Pengecualian
Mengubah Default
Lihat selengkapnya
Jika Anda memiliki masalah dengan CanCan yang tidak dapat Anda temukan solusinya dalam dokumentasi, silakan tambahkan masalah di GitHub atau fork proyek dan kirimkan permintaan penarikan.
Untuk menjalankan spesifikasi, Anda harus memanggil bundle
lalu rake
. Lihat spesifikasi/README untuk informasi lebih lanjut.
CanCan terinspirasi oleh declarative_authorization dan aegis. Terima kasih banyak juga kepada kontributor CanCan. Lihat CHANGELOG untuk daftar lengkap.