This is an example from a book, a bit modified. It seems like sessions don't work. Every time I get a new session.
#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
require './reporter'
run Reporter
<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>
I'm using
shotgun -s thin -p 4567
- how I start serverI just can't understand why sessions don't save data?
Why did you comment
set :session_secret, "something"
in your examples? If you use shotgun for reloading server it can help you.