2012-05-22 19 views
5

जिस ऐप को मैं लिख रहा हूं, उसके लिए मैं सरल हाथ से बना प्रमाणीकरण (जैसा कि Railscast.com पर वर्णित है) का उपयोग कर रहा हूं। रयान बेट्स के निफ्टी जेनरेटर मणि से कुछ कोड का उपयोग करके, मेरे पास एक प्रमाणीकरण मॉडल है जिसमें प्रमाणीकरण के लिए कुछ उपयोगी तरीके हैं। यह मॉड्यूल application_controller.rb में शामिल है।लॉगिन के बाद पिछले यूआरएल पर रीडायरेक्ट करना - रेल

मैं जिस विधियों का उपयोग करना चाहता हूं उसे redirect_to_target_or_default कहा जाता है। मुझे पता है कि मुझे एक ऐसे उपयोगकर्ता को उस पृष्ठ पर रीडायरेक्ट करने की आवश्यकता है जिसे वे प्रमाणीकृत कर चुके थे लेकिन मुझे नहीं पता कि मुझे इस विधि को कहां कॉल करना चाहिए? अगर कोई मुझे इस विधि का उपयोग करने के बारे में एक विचार दे सकता है, तो मैं इसकी सराहना करता हूं।

ControllerAuthenticaion मॉड्यूल कोड

module ControllerAuthentication 
    # Makes these methods helper methods in the controller that includes this module. 
    def self.included(controller) 
    controller.send :helper_method, 
     :current_admin, :logged_in?, 
     :redirect_to_target_or_default 
    end 

    def current_admin 
    @current_admin ||= Admin.find(session[:admin_id]) if session[:admin_id] 
    end 

    def logged_in? 
    current_admin 
    end 

    def login_required 
    unless logged_in? 
     store_target_location 
     redirect_to login_url, 
     :alert => "You must first log in before accessing this page." 
    end 
    end 
    def redirect_to_target_or_default(default, *args) 
    redirect_to(session[:return_to] || default, *args) 
    session[:return_to] = nil 
    end 
    def redirect_to_or_default(target, *args) 
    redirect_to(target || default, *args) 
    end 
    def store_target_location 
    session[:return_to] = request.url 
    end 
end 

उत्तर

3

आप जनरेटर (रों) रयान की मणि के भीतर हो गई थी? यह उस में भी इस विधि के साथ आप के लिए एक SessionController (link को देखें) उत्पन्न हो जाना चाहिए था:

def create 
    @session = Session.new(params[:session]) 
    if @session.save 
    flash[:notice] = "Logged in successfully." 
    redirect_to_target_or_default(root_url) 
    else 
    render :action => 'new' 
    end 
end 

मुझे लगता है कि आप इसे उपयोग करने के लिए इस कोड को पढ़ने के दौरान की एक विचार प्राप्त कर सकते हैं। :)

+0

बिल्कुल वही जो मैं खोज रहा था! धन्यवाद! – agentbanks217

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