2012-05-22 52 views
5

Đối với ứng dụng tôi đang viết, tôi đang sử dụng xác thực bằng tay đơn giản (như được mô tả trên Railscast.com). Sử dụng một số mã từ đá quý NiftyGenerators của Ryan Bates, tôi có một mô hình xác thực có một số phương pháp hữu ích để xác thực. Mô-đun này được đưa vào application_controller.rb.Chuyển hướng đến URL trước sau khi đăng nhập - Rails

Một trong những phương pháp mà tôi muốn sử dụng được gọi là redirect_to_target_or_default. Tôi biết đây là những gì tôi cần để chuyển hướng một người dùng đến trang mà họ đã được trên một khi họ đã xác thực nhưng tôi không biết nơi tôi nên gọi phương pháp này? Nếu ai đó có thể cho tôi một ý tưởng về cách sử dụng phương pháp này, tôi sẽ đánh giá cao nó.

ControllerAuthenticaion Mô-đun Mã

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 

Trả lời

3

Cậu chạy (s) máy phát điện trong vòng ngọc Ryan? Nó nên đã tạo ra một SessionController (tham khảo link) cho bạn với phương pháp này cũng ở trong đó:

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 

Tôi nghĩ rằng bạn có thể nhận được một ý tưởng về làm thế nào để sử dụng nó khi đọc mã này. :)

+0

Chính xác những gì tôi đang tìm kiếm! Cảm ơn! – agentbanks217

Các vấn đề liên quan