【问题标题】:Sessions & User Authentication in PadrinoPadrino 中的会话和用户身份验证
【发布时间】:2012-04-29 23:09:37
【问题描述】:

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

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

【问题讨论】:

    标签: ruby authentication login session-cookies padrino


    【解决方案1】:

    是的,

    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
    

    【讨论】:

    • 太好了,看来这应该足以满足我的需求了。另一个快速的问题(我希望);会话到期如何管理/修改?
    • 我似乎无法找到从自定义帮助类中的类方法访问session 哈希的方法...有什么方法可以实现吗?
    猜你喜欢
    • 2019-07-15
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多