加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 用户和管理员使用设计注销并通过RSPEC进行测

发布时间:2020-12-17 02:35:26 所属栏目:百科 来源:网络整理
导读:我在铁路应用程序中使用Devise. 我有两个模型:用户和管理员. 目前,如果我访问用户登录和管理员登录,我可以同时以用户和管理员身份登录. 如果其他人签到,我想强制注销一个.最好的办法是什么? 此外,如果有人有一个很好的方法来测试rspec / capybara,请分享!
我在铁路应用程序中使用Devise.

我有两个模型:用户和管理员.

目前,如果我访问用户登录和管理员登录,我可以同时以用户和管理员身份登录.

如果其他人签到,我想强制注销一个.最好的办法是什么?

此外,如果有人有一个很好的方法来测试rspec / capybara,请分享!

谢谢

解决方法

我会复制Devise控制器并添加一个之前的过滤器,如下所示:

class Users::SessionsController < Devise::SessionsController

  before_filter :logout_admin,:only => "create"

  def create
    super
  end

  private

  def logout_admin
    # change :admin to :user in the admin's session controller
    # the sign_out is a devise controller helper that forces sign out
    sign_out :admin
  end

end

然后,对于测试,您可以通过调用subject.current_user或subject.current_admin来访问功能(控制器)规范中的当前用户,请转到此处:https://github.com/plataformatec/devise以确保包含测试助手,然后尝试以下操作:

require 'spec_helper'

describe Users::SessionsController do
  login_admin

  describe "POST create" do
    it "should logout admin" do
      post :create,{:user => {:email => "tester@email.com",:password => "secret"} }
      subject.current_user.should_not be_nil
      subject.current_admin.should be_nil
    end
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读