5

पर काम नहीं कर रहा है मेरे पास लगभग Victor Martin (आप यहां पूछे गए प्रश्न देख सकते हैं) के समान समस्याएं हैं।घोषणात्मक प्रमाणीकरण और if_attribute

मुझे घोषणात्मक प्रमाणीकरण मिल गया है जो कि सशर्तों का उपयोग करने में शामिल नहीं है। जैसे

has_permission_on :users, :to => [:edit, :update, :destroy] do 
if_attribute :user => is { current_user } 
end 

क्या घोषणात्मक प्राधिकरण के साथ कोई आम समस्या है? मैं ऑथलॉगिक का उपयोग कर रहा हूं और मुझे संदेह है कि एप्लिकेशन नियंत्रक में 'current_user' विधि समस्या का स्रोत हो सकती है।

+0

मैं authorizaiton के लिए कैनकैन का उपयोग कर समाप्त हो गया के बारे में विवरण - मेरी सशक्त अनुशंसा यह – digitalWestie

उत्तर

4

ध्यान दें कि यदि आप अपने नियंत्रकों में "filter_access_to" का उपयोग कर रहे हैं, तो आपको यह सुनिश्चित करना होगा कि आपके पास ": attribute_check => true" है। इसके बिना, सशर्त "if_attribute" घोषणाएं कुछ भी नहीं करती हैं।

अधिक इस in the Declarative Authorization docs

1

यदि आप पहले से ही नहीं है, तो अपने ApplicationController को यह जोड़ने की जरूरत है: जहाँ तक

has_permission_on :users, :to => [:edit, :update, :destroy] do 
    if_attribute :user => is { user } 
end 

के रूप में मैं जानता हूँ कि declarative_authorization नहीं करता है:

before_filter :set_current_user 
protected 
def set_current_user 
    Authorization.current_user = current_user 
end 

फिर अपने नियम इस प्रकार दिखाई देगा क्रंट्रोलर पर किसी भी तरीके को कॉल करें और यह नहीं पता कि current_user का अर्थ आपके उदाहरण में है, लेकिन यह आपको Authorization.current_user का उदाहरण देता है जिसे user कहा जाता है जिसे आप अपने authorization_rules.rb फ़ाइल में उपयोग कर सकते हैं।

+0

ठीक है, मैं उपयोगकर्ता 'का उपयोग' current_user 'के स्थान पर की कोशिश की। अब मैंने यह किया है कि मेरे ऊपर सब कुछ है लेकिन यह अभी भी काम नहीं करता है। :/ – digitalWestie

+0

क्या आपको त्रुटियां मिलती हैं या सिर्फ "अनुमति अस्वीकार" होती है? आपका लॉग क्या कह रहा है? –

संबंधित मुद्दे