2012-03-22 2 views
0

Это пример из книги, немного измененной. Кажется, что сеансы не работают. Каждый раз, когда я получаю новую сессию.Shotgun каждый раз получает новые сессии, не может хранить данные в сеансах

#reporter.rb 

    require 'sinatra/base' 

    class LoginScreen < Sinatra::Base 

     #configure(:development) { set :session_secret, "something" } 

     enable :sessions 

     get('/login') { erb :login } 

     post('/login') do 
     if params[:user][:login] == 'admin' && params[:user][:password] == 'admin' 
      session['user_name'] = params[:user][:login] 
      redirect '/' 
     else 
      session[:notice] = "notice!" 
      redirect '/login' 
     end 
     end 
    end 

    class Reporter < Sinatra::Base 
     # "прослойка" будет запущена перед фильтрами 
     # enable :sessions 
     # use Rack::Session::Pool, :expire_after => 2592000 
     #configure(:development) { set :session_secret, "something" } 
     use LoginScreen 

     before do 
     unless session[:user_name] 
      halt "Access denied, please <a href='/login'>login</a>." 
     end 
     end 

     get('/') { "Hello #{session['user_name']}." } 
    end 

config.ru

require './reporter' 
run Reporter 

login.erb

<h1>Main User</h1> 
    <h1>Welccome to reporter</h1> 
    <p>You must log in with your credentials or as "newcomer" </p> 

    <form action="/login" method="post" id="user"> 
     <p> 
      <label>login:</label><br /> 
      <input type="text" name="user[login]" id="login" /> 
     </p> 

     <p> 
      <label>Password:</label><br /> 
      <input type="text" name="user[password]" id="password" /> 
     </p> 

     <p> 
      <input type="submit" value="Log in"> 
     </p> 
    </form> 

Я использую

  • рубин 1.9.2
  • Синатра 1.3.2
  • shotgun -s thin -p 4567 - как я начинаю сервер

Я просто не могу понять, почему сеансы не сохранять данные?

ответ

5

Почему вы прокомментируете

set :session_secret, "something" 

в ваших примерах? Если вы используете дробовик для перезагрузки сервера, он может вам помочь.

+0

Спасибо! Это помогло. Я не знаю почему, но в первый раз я добавил, что это не помогло мне, поэтому я прокомментировал это. Но, похоже, здесь были проблемы в моем коде, а не в дробовике. Теперь все в порядке.) – user1136228

Смежные вопросы