2012-05-22 12 views
5

Für die App, die ich schreibe, verwende ich einfache handgemachte Authentifizierung (wie auf Railscast.com beschrieben). Unter Verwendung eines Codes aus dem NiftyGenerators-Juwel von Ryan Bates habe ich ein Authentifizierungsmodell mit einigen nützlichen Methoden zur Authentifizierung. Dieses Modul ist in application_controller.rb enthalten. Eine der Methoden, die ich verwenden möchte, heißt redirect_to_target_or_default. Ich weiß, dass das ist, was ich brauche, um einen Benutzer zu der Seite umzuleiten, auf der sie waren, nachdem sie sich authentifiziert haben, aber ich weiß nicht, wo ich diese Methode nennen sollte? Wenn jemand mir eine Idee geben könnte, wie man diese Methode benutzt, würde ich es sehr schätzen.Umleiten zur vorherigen URL nach dem Login - Rails

ControllerAuthenticaion Modulcode

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 

Antwort

3

Haben Sie laufen Generator (en) in Ryans gem? Es sollte eine Session generiert haben (siehe link) für Sie auch diese Methode darin:

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 

Ich denke, Ihnen eine Vorstellung davon bekommen, wie es zu benutzen, während Sie diesen Code zu lesen. :)

+0

Genau das, was ich gesucht habe! Vielen Dank! – agentbanks217

Verwandte Themen