2

我对 Padrino(我来自 PHP 背景)和一般的 ruby​​ Web 框架非常陌生,并且一直试图弄清楚如何实现一个简单的用户身份验证和会话管理系统,但还没有真正找到太多关于主题。我知道 padrino 带有一个预先构建的“管理员”包,其中包括用户登录/身份验证等,但是我宁愿从头开始自己动手,而不是尝试定制他们的解决方案以满足我自己的需求。

所以我的问题是,在 Padrino 中,一旦针对数据库验证了用户/通行证组合,我将如何通过设置会话数据来实现一个简单的基于会话的身份验证系统来登录用户,检索该会话数据以检查用户是否当请求保护某些页面/资源时登录,使用会话数据获取用户的 ID/角色/等,然后在用户注销时销毁该会话。作为一名 PHP 程序员,我习惯于$_SESSION为此目的使用超全局,在 padrino/ruby 中是否有类似的东西?我注意到 app.rb 中有一个enable :sessions,是:sessionspardrino 等价的吗?

4

1 回答 1

12

是的,

session[:cart] = cart_id
Cart.find(session[:cart].to_i) if session[:cart].present?

出于身份验证目的,您可以使用更简单的方法避免 padrino-admin 和内置身份验证:

# in app.rb
use Rack::Auth::Basic, 'Restricted Area' do |username, password|
  user == 'admin' and password == 'pwd'
end

如果您需要控制更多会话/cookie,您可以使用:

set :sessions,
  :key          => '__awesome_key',
  :secret       => 'awesome_password',
  :expire_after => 1.year
于 2012-04-18T14:26:28.440 回答