Rails管理员 - 成为另一个用户

时间:2011-12-05 15:34:13

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

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

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

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

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

更新

我刚看到这个:

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

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

3 个答案:

答案 0 :(得分:4)

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

switch_user

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

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

答案 1 :(得分:0)

CanCan是授权,您在身份验证方面受到了限制。如果您使用的是基于warden的任何内容(例如devise),请参阅at the bottom. 制作一个范围(如:admin),用于存储管理员用户。通过#set_user设置要个性化的用户。见上面的链接。

答案 2 :(得分:0)

如果设计与用户在您的应用中看到的内容无关,也许您可​​以按照以下方式执行操作:

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