لم تعد جوهرة CanCan تتم صيانتها . الرجاء استخدام مكتبة ترخيص أخرى مثل CanCanCan أو Pundit.
<img src=“https://fury-badge.herokuapp.com/rb/cancan.png” alt=”إصدار الجوهرة” /> <img src=”https://secure.travis-ci.org/ryanb/ cancan.png?branch=master” /> <img src=“https://codeclimate.com/github/ryanb/cancan.png” />
ويكي | ردوكس | سكرينكست
CanCan هي مكتبة ترخيص لـ Ruby on Rails والتي تقيد الموارد المسموح لمستخدم معين بالوصول إليها. يتم تعريف جميع الأذونات في مكان واحد (فئة Ability
) ولا يتم تكرارها عبر وحدات التحكم وطرق العرض واستعلامات قاعدة البيانات.
في Rails 3 ، أضف هذا إلى ملف Gemfile الخاص بك وقم بتشغيل أمر bundle
.
جوهرة "كانكان"
في Rails 2 ، أضف هذا إلى ملف Environment.rb الخاص بك.
التكوين . جوهرة "كانكان"
وبدلاً من ذلك، يمكنك تثبيته كمكون إضافي.
تثبيت البرنامج المساعد للقضبان git://github.com/ryanb/cancan.git
يتوقع CanCan وجود طريقة current_user
في وحدة التحكم. أولاً، قم بإعداد بعض المصادقة (مثل Authlogic أو Devise). راجع تغيير الإعدادات الافتراضية إذا كنت بحاجة إلى سلوك مختلف.
يتم تعريف أذونات المستخدم في فئة Ability
. يتضمن CanCan 1.5 مولد Rails 3 لإنشاء هذه الفئة.
القضبان ز كانكان: القدرة
في Rails 2.3، ما عليك سوى إضافة فئة جديدة في "app/models/ability.rb" بالمحتويات التالية:
القدرة الصفية تشمل CanCan :: القدرة تهيئة مواطن ( المستخدم ) نهاية نهاية
راجع تحديد القدرات للحصول على التفاصيل.
ويمكن بعد ذلك التحقق من أذونات المستخدم الحالي باستخدام can?
ولا cannot?
الأساليب في العرض ووحدة التحكم.
<% إذا أمكن؟ :تحديث، @article %> <%= link_to "Edit"،edit_article_path(@article) %> <% نهاية %>
راجع التحقق من القدرات لمزيد من المعلومات
authorize!
ستثير الطريقة في وحدة التحكم استثناءً إذا لم يكن المستخدم قادرًا على تنفيذ الإجراء المحدد.
عرض مواطنه @المادة = المادة . ابحث عن ( المعاملات [ :id ]) يأذن! :اقرأ @article نهاية
يمكن أن يكون تعيين هذا لكل إجراء أمرًا مملاً، لذلك يتم توفير طريقة load_and_authorize_resource
لتخويل جميع الإجراءات تلقائيًا في وحدة تحكم مورد النمط RESTful. سيستخدم عامل التصفية قبل لتحميل المورد في متغير مثيل وتخويله لكل إجراء.
فئة ArticlesController < ApplicationController Load_and_authorize_resource عرض مواطنه # @المقال تم تحميله واعتماده بالفعل نهاية نهاية
راجع تفويض إجراءات وحدة التحكم لمزيد من المعلومات.
إذا فشل ترخيص المستخدم، فسيتم ظهور استثناء CanCan::AccessDenied
. يمكنك التعرف على هذا وتعديل سلوكه في ApplicationController
.
فئة ApplicationController < ActionController :: Base Rescue_from CanCan :: تم رفض الوصول إلى | استثناء | redirect_to root_url , :alert => استثناء . رسالة نهاية نهاية
راجع معالجة الاستثناءات لمزيد من المعلومات.
إذا كنت تريد التأكد من حدوث التفويض في كل إجراء في تطبيقك، فأضف check_authorization
إلى ApplicationController الخاص بك.
فئة ApplicationController < ActionController :: Base check_authorization نهاية
سيؤدي هذا إلى ظهور استثناء إذا لم يتم تنفيذ التفويض في الإجراء. إذا كنت تريد تخطي هذا، أضف skip_authorization_check
إلى فئة فرعية لوحدة التحكم. راجع ضمان التفويض لمزيد من المعلومات.
الترقية إلى 1.6
تحديد القدرات
فحص القدرات
تفويض إجراءات وحدة التحكم
معالجة الاستثناء
تغيير الافتراضيات
شاهد المزيد
إذا كانت لديك أية مشكلات مع CanCan ولا يمكنك العثور على حل لها في الوثائق، فيرجى إضافة مشكلة على GitHub أو تقسيم المشروع وإرسال طلب سحب.
لتشغيل المواصفات، يجب عليك استدعاء bundle
ثم rake
. راجع المواصفات/الملف التمهيدي لمزيد من المعلومات.
كان CanCan مستوحى من التصريح والرعاية. أيضا جزيل الشكر للمساهمين في CanCan. راجع سجل التغيير للحصول على القائمة الكاملة.