我使用Sinatra框架來製作一個非常簡單的Web應用程序,它需要登錄會話。Sinatra應用程序在瀏覽器中共享的會話
我可以很好地登錄,但是當我的朋友訪問該網站時,他們以我的身份登錄。我有一個朋友註冊。當我重新訪問該網站時,我以她的身份登錄!我們在不同設備上相距3000英里。
這裏是我的登錄密碼的要點..
require 'rubygems'
require 'sinatra'
# I have tried enabling/disabling the :session_secret
# set :session_secret, 'my_secret'
enable :sessions
before '*' do
begin
User.login(User.find(session[:me])) if session[:me]
end
end
post '/login' do
user = User.find_by_email!(params[:email]).authenticate!(params[:password])
session[:me] = user.id
User.login user
200
end
我也想加入這個我rackup文件
use Rack::Session::Cookie,
:key => 'my_app_key',
:path => '/',
:expire_after => 14400, # seconds
:secret => 'secret_stuff'
的問題是,無論在生產和開發環境。
西納特拉文檔不推薦任何配置超越enable :sessions
http://www.sinatrarb.com/faq.html#sessions
什麼是'User.login'的樣子? –
'def login(user); @@ me = user;真的沒什麼意思 – jchook
這是_major_興趣......'@@ me'是一個類變量,它保留了它在類中的價值,並且有一個使用壽命_span多個請求_...所以這可能是你的問題。 –