【问题标题】:In which file the current user is set in ruby on rails?当前用户在哪个文件中设置在 ruby​​ on rails 中?
【发布时间】:2014-08-18 22:13:31
【问题描述】:

我是红宝石新手。我想知道当前用户设置的时间/地点。我知道会为每个 URL 请求生成 cookie。会话详细信息存储在哪里?以及当前用户设置的位置(在哪个文件中)。哪位请简单解释一下。

【问题讨论】:

  • 您是否在使用任何类型的身份验证库/宝石,例如:设计?如果是,那么它是从那里创建并可用的。
  • 非常感谢您的回答。除此之外如果你不使用任何东西意味着什么?请简要说明

标签: ruby-on-rails session-cookies


【解决方案1】:

希望您的 Rails 应用程序中有一个users 表,因此设计会自动加载current_userusers 表的所有列。

【讨论】:

    【解决方案2】:

    这完全取决于您如何实现它。如果您使用像 Devise 这样的库,它有自己的实现,但通常这些东西存储在加密的 Rails 会话存储中,并且在每个请求“会话”控制器验证访问者的 cookie 并且只有在 current_user 设置为用户对象之后来自会话。

    【讨论】:

      【解决方案3】:

      我更喜欢它在applicaton_controller..这样我可以检查每个请求的user_signed_in位置并检查会话..如果它退出那么它就可以了,否则redirect_to登录页面..

      例如application_controller.rb

      before_filter :check_current_user
      
      
      def check_current_user
      
        if current_user
         #check if current user exists in our session
          session[:current_user_id] = User.find(session[:current_user_id]).id
        else
         #if not ,then create new and set it to the session and return the current_user as u
          session[:current_user_id] = User.create(:username => "guest", :email => "guest_# {Time.now.to_i}#{rand(100)}@example.com")
          u.save!(:validate => false)
          session[:current_user_id] = u.id
          u
        end
      end
      

      虽然上面的代码并不完美..但我只是想展示如何实现 current_user 以使用会话检查每个请求的 current_user 并在没有 current_user 作为访客的情况下在会话中设置它...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-08
        • 2018-03-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多