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
- 私はセッションがデータを保存しない理由を私は理解できないサーバー
を開始どのように?
ありがとうございます!それは助けになった。なぜか分からないけど、最初にその行を追加してもそれは助けにならなかったので、私はそれをコメントアウトしました。しかし、ここで私のコードではなくショットガンで問題が発生したようです。今すべては大丈夫です。 ) – user1136228