我使用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多个请求_...所以这可能是你的问题。 –