हैंडल करते हैं मैं रेल 3.0.7 के साथ 1.3.4 तैयार कर रहा हूं। मेरे पास दो तरीकों से उपयोगकर्ता साइन इन कर सकते हैं: वेब ऐप का उपयोग करके, और मोबाइल वेब ऐप (JSON API कॉल के माध्यम से) का उपयोग करना। पहला तरीका डिफ़ॉल्ट devise सत्र नियंत्रक द्वारा पूरी तरह से संभाला जाता है। प्रमाणीकरण की API-कॉल विधि को नियंत्रक में होना आवश्यक है जो मेरे Api::BaseController
को बढ़ाता है। इस विधि के माध्यम से प्रवेश करने के लिएडिवाइसेज: एकाधिक नियंत्रक उपयोगकर्ता सत्र
class Api::UserSessionsController < Api::BaseController
…
def create
user = warden.authenticate(:scope => :user)
if user
sign_in(:user, user)
else
# Do some error handling
end
end
end
प्रयास Devise::Strategies::Authenticatable
में valid_controller?
विधि की वजह से असफल: तो, मैं इस तरह इस दूसरे नियंत्रक लिखा था। चूंकि मैंने उपयोगकर्ताओं के लिए मैप किए गए नियंत्रक के रूप में डिफ़ॉल्ट नियंत्रक (devise/sessions
) छोड़ा है, यह मेरे कस्टम नियंत्रक से प्रमाणीकरण की अनुमति नहीं देता है।
मैं Devise::SessionsController
के अपने खुद के उपवर्ग में मेरी कस्टम कार्यक्षमता रोल करना चाहते हैं, लेकिन मैं एपीआई सत्र API::BaseController
विस्तार करने के लिए नियंत्रक की जरूरत , तो मैं Devise::SessionsController
विस्तार नहीं कर सकते और साथ ही। मैं एपीआई नियंत्रक में काम कर रहे, डिफ़ॉल्ट-व्यवहार वेब-ऐप प्रमाणीकरण विधियों को नहीं रखना चाहता, खासकर क्योंकि इसे उन्हें डिवाइसेज नियंत्रक से कॉपी करने की आवश्यकता होगी।
कोई सुझाव? क्या कोई ऐसी कॉन्फ़िगरेशन है जो मुझे याद आ रही है जो कई नियंत्रकों को सत्रों को संभालने की अनुमति देती है? valid_controller?
विधि ==
तुलना करता है, .include?
नहीं, इसलिए मुझे नहीं लगता कि यह कैसे काम करेगा।
अद्यतन
यह एक भयानक अस्थायी समाधान है। मुझे यह पसंद नहीं है, इसलिए मैं इसे एक उत्तर के रूप में पोस्ट नहीं कर रहा हूं, लेकिन मैंने सोचा कि यह आपके उत्तर देने वाले सभी प्रकार के लिए भोजन-विचार-विचार की पेशकश कर सकता है:
मेरी निर्माण विधि के शीर्ष पर, मैं कर सकता था डेविस को सत्र नियंत्रक होने की उम्मीद है कि ओवरराइड करें।
Devise.mappings[:user].controllers[:sessions] = params[:controller]
इस वसीयत में प्रयोग किया जाने कार्यक्षमता के आसपास काम कर रहा है (एक एकल, विशिष्ट नियंत्रक की आवश्यकता होती है सत्र निर्माण करने के लिए) तो मैं इसे रखने के लिए नहीं करना चाहती। मुझे आश्चर्य है कि क्या यह बाधा एक सुरक्षा उपाय है या सिर्फ एक सम्मेलन है - यदि यह सुरक्षा के लिए है, तो यह संभवतः काफी खराब है।
यह एक बहुत अच्छा विचार है। मेरे से निश्चित रूप से कम सकल। मैं 'valid_controller' में 'शामिल' करने के लिए तैयार करने की सोच रहा था और मेरे मार्गों की घोषणा में एक सरणी की आपूर्ति करता था। – andrewmitchell