这是一本书的例子,有点修改过。会议似乎没有成功。我每次参加新会议。
#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>
我正在使用
shotgun -s thin -p 4567
- 我如何启动服务器我无法理解为什么会话不能保存数据?
答案 0 :(得分:5)
你为什么评论
set :session_secret, "something"
在你的例子中? 如果您使用霰弹枪重新加载服务器,它可以帮助您。