Pertanyaan Otorisasi Admin dengan CanCan


A memiliki banyak kontroler dengan namespace Admin. Saya ingin membatasi akses ke ini kecuali pengguna adalah admin. Apakah ada cara untuk melakukan ini menggunakan CanCan tanpa harus memanggil tidak sah! di setiap metode setiap kontroler?


8
2018-01-19 16:24


asal


Jawaban:


Tambahkan pengontrol aplikasi ke ruang nama Anda dan filter sebelumnya.

class ApplicationController < ActionController::Base
end

class Admin::ApplicationController < ApplicationController 
  # these goes in your namespace admin folder
  before_filter :check_authorized

  def check_authorized
    redirect_to root_path unless can? :admin, :all
  end
end

class SomeadminController < Admin::ApplicationController
   def some_action
     # do_stuff
   end
end

8
2018-01-19 16:32



Itu Namespaces Admin halaman wiki untuk CanCan mencantumkan beberapa solusi untuk masalah ini.

  • Seperti yang disarankan @mark, memiliki pengontrol dasar untuk admin yang memeriksa otorisasi untuk setiap tindakan.
    • Anda mungkin tidak perlu menggunakan CanCan sama sekali untuk ini jika yang Anda perlukan adalah memeriksa apakah pengguna memiliki admin bendera.
  • Untuk menangani admin secara berbeda satu sama lain (berbeda dari pengguna biasa saja), anggap terpisah AdminAbility kelas (ini sedikit di luar topik, tetapi bisa membuktikan relevan).

1
2017-07-31 15:39



sekarang rails_admin memiliki dukungan penuh dengan Cancan, Anda dapat menemukannya di situs web resminya, ada halaman wiki untuk topik ini:

Izin Rails Admin dengan CanCan:


0
2018-03-14 03:39