Дробовик получает новые сеансы каждый раз, не может хранить данные в сеансах - PullRequest
0 голосов
/ 22 марта 2012

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

#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 - как я запускаю сервер

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

1 Ответ

5 голосов
/ 26 марта 2012

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

set :session_secret, "something"

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

...