Ruby on Rails: сохранение статуса входа в сессию.

#ruby-on-rails

#ruby-on-rails

Вопрос:

У меня есть этот admin_controller

   def login
    if request.post?
      if params[:full_name] == "adm" amp;amp; params[:password] == "123"
        data = { :success => 'true', :msg => "Welcome, #{params[:full_name]}"}
        #redirect_to :action => :welcome
      else
        data = { :failure => 'true', :msg => "Username or Password wrong !"}
      end
      render :text => data.to_json, :layout => false
    end
  end

  def welcome    
  end
  

и у меня есть login.js … все работает!

Как встроить sessions ?

Я не понимаю, как я могу. Пожалуйста, помогите мне.

У меня на странице есть несколько ссылок, и когда я вошел в систему и нажал на ссылку, я получаю другую страницу (New post) , отлично! Но если я вернусь, my application хочет, чтобы я снова ввел логин и пароль. И если я введу URL-адрес своей ссылки, (New post) я попаду туда без проблем, но это неправильно, там должен быть текст что-то вроде: « Log in first «

Ответ №1:

Краткий ответ:

 session[:user_id] = id_of_user_that_just_signed_in
  

application_controller.rb

 class ApplicationController < ActionController::Base
  protect_from_forgery

  helper_method :current_user

  private  
    def current_user  
      @current_user ||= User.find_by_id(session[:user_id]) if session[:user_id]  
    end
end
  

Длинный ответ: Я написал руководство по использованию Omniauth, и в одной части («хранилище сеансов») вы видите обработку сеанса и написание соответствующих помощников: http://www.communityguides.eu/articles/16 (с полным кодом на Github)