【问题标题】:Rails Admin - Become Another UserRails 管理员 - 成为另一个用户
【发布时间】:2011-12-05 15:34:13
【问题描述】:

我正在使用 Rails 3.0.10,目前正在使用 CanCan 来确定用户在应用程序中拥有的不同能力。

我正在使用 Devise 进行用户身份验证。

管理员用户是否有一种临时使用 CanCan 的“成为”另一个用户的好方法?这对于成为可能遇到与其帐户相关的独特问题的特定用户特别有用。

简单来说,我只是希望能够以任何给定用户的身份登录以查看他们所看到的内容。不确定是否有 CanCan 或 Devise 功能。

更新

我刚遇到这个:

How-To: Sign in as another user if you are an Admin

我还没有测试过,但这可能是我正在寻找的答案!如果这是您采用的方法,或者您有其他想法,请随时提供一些见解!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 devise cancan


    【解决方案1】:

    我找到了我要找的东西,而且有一颗宝石!

    switch_user

    它真的很容易使用。我只需要将 gem switch_user 添加到我的 Gemfile 中。

    然后将<%= switch_user_select %> 添加到我的布局中。正是我想要的!

    【讨论】:

      【解决方案2】:

      CanCan 是授权,你对认证感兴趣。如果您使用基于 warden 的任何内容(如 devise),请参阅 at the bottom. 创建一个范围(如:admin),用于存储管理员用户。通过#set_user 设置您想要拟人化的用户。请参阅上面的链接。

      【讨论】:

      • 我很抱歉没有提供足够的信息。我刚刚更新了我的问题。我正在使用 Devise 进行用户身份验证,并使用 CanCan 来确定功能。本质上,我只是希望能够以其他用户身份登录以查看他们所看到的内容,但仍然有一个按钮可以返回到管理界面。
      【解决方案3】:

      如果设计与用户在您的应用中看到的内容无关,也许您可​​以按照以下方式做一些事情:

      1) 为您的非管理员用户创建新功能

      2) 测试用户是否可以做或看东西

      3) 根据这些能力生成自定义页面

      ability = Ability.new(@user)
      Rails.logger.debug("* ability.can?(:update, @user):#{ability.can?(:update, @user)}") # see if user can access the user
      Rails.logger.debug("* User.accessible_by(ability):#{User.accessible_by(ability).inspect.to_s}") # see if returns the records the user can access
      Rails.logger.debug("* to_sql:#{User.accessible_by(ability).to_sql}") # see what the generated SQL looks like
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-22
        • 2019-04-27
        • 1970-01-01
        • 2016-07-23
        • 2021-06-23
        • 1970-01-01
        相关资源
        最近更新 更多