क्या रीस्टफुल संसाधन संसाधनों का उपयोग करते समय उपयोगकर्ता भूमिकाओं को लागू करने के लिए सर्वसम्मति से सर्वोत्तम दृष्टिकोण है?भूमिका-आधारित रीस्टफुल संसाधनों के लिए ऐप संरचना
User has_many Tickets
Event has_many Tickets
Ticket belongs_to Person, Event
और फिर आगे कहते हैं कि मैं उपयोगकर्ता के दो प्रकार के होते हैं:: ग्राहकों और एजेंटों
मैं निम्नलिखित संसाधन हैं कहो। दोनों सिस्टम में लॉग इन करेंगे, लेकिन उनकी भूमिका के आधार पर विभिन्न संसाधनों की पहुंच और कार्यक्षमता के साथ। उदाहरण के लिए:
ग्राहकों तक पहुंच सकते हैं:
- घटना सूचकांक, दिखाने
- टिकट सूचकांक (उपयोगकर्ता द्वारा स्कोप), शो, खरीद/बनाने के लिए, वापसी/हटाने
- व्यक्ति बनाने के लिए, शो, अद्यतन
एजेंटों का उपयोग कर सकते हैं:
- घटना सूचकांक, शो, बनाना, अपडेट,
- टिकट अनुक्रमणिका हटाने शो बेचने/बनाएं, अपडेट, वापसी/हटाने
- व्यक्ति सूचकांक, शो, बनाएं, अपडेट,
हटाना 4 में से कौन सा नीचे सामान्य दृष्टिकोण क्लीनर और अधिक लचीला होगा? भूमिका से
namespace "agent" do
resources :events, :tickets, :people
end
namespace "customer" do
resources :events, :tickets, :people
end
अलग नियंत्रकों, उदाहरण के लिए::
AgentController
def sell_ticket, etc
CustomerController
def buy_ticket, etc
अलग-अलग क्रियाएं जहां जरूरत है, उदाहरण के साथ
साझा नियंत्रकों:
भूमिका फोल्डर और नामस्थान में संसाधनों, जैसे भीतरअलग नियंत्रकों
TicketController
before_filter :customer_access, :only => :buy
before_filter :agent_access, :except => :buy
def buy #accessed by customer to create ticket
def sell #accessed by agent to create ticket
सशर्त बयान के साथ साझा क्रियाएं, उदाहरण:
TicketController
def create
if @role == :customer
#buy ticket
elsif @role == :customer
#sell ticket
end
end
मॉडल उस उपयोगकर्ता के बारे में नहीं जानता है जो प्रमाणित है। यह आमतौर पर नियंत्रक द्वारा प्रबंधित किया जाता है। इसके अलावा, ओपी सुरक्षा को संभालने का सबसे अच्छा तरीका पूछ रहा है। इसे विचारों में अनुकूलित नहीं किया जा सकता है। एपीआई कनेक्शन के बारे में क्या? आप विभिन्न उपयोगकर्ता भूमिकाओं के लिए सुरक्षा कैसे लागू करते हैं? आप कोड दोहराना नहीं चाहते हैं, इसलिए इसे केंद्रीय स्थान यानी नियंत्रक में होना चाहिए। तो सवाल यह है कि, उपयोगकर्ता भूमिकाओं और अनुमतियों पर इस तरह के अच्छे नियंत्रण को जोड़ने के लिए आप अपने नियंत्रक को कैसे प्रबंधित कर सकते हैं। –