2012-04-18 79 views
2

我对Padrino(我来自PHP背景)和ruby web框架都非常陌生,一直试图弄清楚如何实现简单的用户身份验证和会话管理系统,但还没有真正找到关于这个问题的很多文档。我知道padrino带有一个预先构建的“Admin”包,其中包括用户登录/认证等,但我宁愿从头开始自己制作,而不是试图根据自己的需要定制解决方案。Padrino中的会话和用户身份验证

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

回答

12

是啊,

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

认证的目的就可以避免padrino管理员和内置的身份验证使用更更简单的方法:

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

如果您需要控制多一点你的会话/您可以使用的饼干:

set :sessions, 
    :key   => '__awesome_key', 
    :secret  => 'awesome_password', 
    :expire_after => 1.year 
+0

好极了,好像应该足以满足我的需求。另一个快速问题(我希望);会话过期如何管理/修改? – 2012-04-18 14:35:08

+0

我更新了我的答案。 – DAddYE 2012-04-19 13:02:33

+0

我似乎无法找到一种方法来访问从定制的辅助类中的类方法'会话'哈希有没有什么办法可以做到这一点? – 2012-04-23 20:02:01