لا يبدو أن ACL9 و Distise يعملان جيدًا معًا
-
26-09-2019 - |
سؤال
لدي نموذج مستخدم يتم التحكم فيه بواسطة ACL9.
في UsersController
:
#ACL9 related stuff
before_filter :load_user, :only => [:show]
access_control do
allow :owner, :of => :user, :to => [:show]
end
def load_user
user = User.find(params[:id])
end
في ApplicationController
:
rescue_from 'Acl9::AccessDenied', :with => :access_denied
def access_denied
authenticate_user! # a method from Devise
end
لا توجد مشكلة في كتابة عنوان URL لتسجيل الدخول إلى صفحة http://localhost:3000/users/sign_in
, ، ولكن هذه مشكلة عندما أقوم على سبيل المثال بكتابة في صفحة المستخدم أولاً ، والتي أتوقع إعادة توجيهها لتسجيل الصفحة تلقائيًا من خلال المنطق أعلاه.
http://localhost:3000/users/1
=> لا نهائي إعادة توجيه الجحيم. يحاول إعادة التوجيه إلى users/1
مرة أخرى بدلاً من التوجيه إلى users/sign_in
.
هل لدى أي شخص رأي حول ما قد يحدث خطأ؟
المحلول
أعتقد أنه يجب ألا تستخدم ACL9 في استنباط وحدة تحكم المستخدم. نظرًا لأنك لم تتم مصادقتك ، فلن يكون لديك حقوق ولن تصدق: د. قد ترغب في منع المستخدمين من حذف ، لذلك يجب أن يكون مثل:
access_control :only => [:destroy] do
allow :admin
end
بالنسبة للمستخدمين Controller ، يجب عليك الكتابة فوق Access_Control إذا كنت ترغب في تركه كما هو الحال في وحدة تحكم التطبيق.