Это пример из книги, немного измененный. Кажется, сессии не работают. Каждый раз, когда я получаю новый сеанс.
#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
- как я запускаю сервер
Я просто не могу понять, почему сеансы не сохраняют данные?