标签: devise

设计Twitter,Cookie溢出错误?

我正在尝试使用本指南将twitter集成到设计中.我基本上把所有出现的facebook都用twitter取而代之.但是,当我使用Twitter登录时,我收到以下错误:

ActionDispatch::Cookies::CookieOverflow (ActionDispatch::Cookies::CookieOverflow):
Run Code Online (Sandbox Code Playgroud)

在以下网址:

http://localhost:3000/users/auth/twitter/callback?oauth_token=something&oauth_verifier=blah
Run Code Online (Sandbox Code Playgroud)

有什么好方法可以解决这个问题吗?

谢谢!

twitter ruby-on-rails devise

27
推荐指数
2
解决办法
9030
查看次数

save(false)和save(:validate => false)之间的区别

save(false)和之间有什么区别save(:validate => false)?据我所知,功能是一样的.使用的版本:validate是在api中让我相信save(false)是一个弃用的版本?在我这样做时,我想到了这个:https://github.com/plataformatec/devise/wiki/How-To : -Create-a-guest-user.指南已经save(false)在那里,但我在使用它时遇到错误.我把它切换到:validate版本,并且工作正常.

ruby-on-rails devise

27
推荐指数
2
解决办法
3万
查看次数

设计确认,如何在点击时重新发送确认电子邮件?

我正在使用设计确认.我想给用户一个链接,点击并重新发送确认电子邮件.问题是,当用户点击链接时,它不会进入设计控制器.在routes.rb文件中是否有我遗漏的东西?这是我的设置:

的routes.rb

devise_for :users, :controllers => { :registrations => "registrations", :sessions => "sessions", :omniauth_callbacks => "authentications" }
Run Code Online (Sandbox Code Playgroud)

user.rb

devise :omniauthable, :database_authenticatable, :registerable, :confirmable, :recoverable, :rememberable, :trackable, :validatable
Run Code Online (Sandbox Code Playgroud)

风景:

<a href="/users/confirmation/new" data-remote="true" data-method="post">Resend confirmation</a>
Run Code Online (Sandbox Code Playgroud)

谢谢

ruby-on-rails devise ruby-on-rails-3

27
推荐指数
5
解决办法
3万
查看次数

如何设置电子邮件的设计发件人名称?

虽然这个帖子没多说,但我想你在Devise intializer中设置发件人名称,如下所示:

app/config/initializers/devise.rb

Devise.setup do |config|
  config.mailer_sender = "'MySite' <no-reply@mysite.com>"
end
Run Code Online (Sandbox Code Playgroud)

但这对我不起作用.

有谁知道这样做的正确方法?

ruby ruby-on-rails devise ruby-on-rails-3

27
推荐指数
1
解决办法
9332
查看次数

路由错误未初始化的常量用户

我是一个铁杆新手...我正在尝试设置登录Facebook的演示应用程序.我正在使用OmniAuth并遵循本教程

https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview

重定向到fB时出现此错误:

   Routing Error:

    uninitialized constant Users

    Try running rake routes for more information on available routes. 
Run Code Online (Sandbox Code Playgroud)

环境

Windows 7
Rails version :3.2.9.rc2
omniauth-1.1.1
devise-2.1.2
Run Code Online (Sandbox Code Playgroud)

我的routes.rb看起来像这样:

  root :to => 'static_pages#home'
  resources :users
  get "static_pages/home"
  match '/auth/facebook' => 'omniauth#passthru'
  match '/users/auth/facebook' => 'users/omniauth_callbacks#passthru'
  devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } , :strategy_class => OmniAuth::Strategies::Facebook
Run Code Online (Sandbox Code Playgroud)

devise.rb包含:

require 'devise/orm/active_record'
require 'omniauth-facebook'

config.omniauth_path_prefix = "/users/auth"
  config.omniauth :facebook, "ABC", "XYZ",{:client_options => { :ssl => { :verify => false } }} 
Run Code Online (Sandbox Code Playgroud)

OmniAuthController包含:ie app/controllers/omniauth_callbacks_controller.rb …

facebook ruby-on-rails devise omniauth ruby-on-rails-3.2

27
推荐指数
1
解决办法
3万
查看次数

设计的自定义认证策略

我需要为https://github.com/plataformatec/devise编写自定义身份验证策略,但似乎没有任何文档.怎么做的?

ruby ruby-on-rails devise

26
推荐指数
1
解决办法
1万
查看次数

使用Rails和Devise进行功能测试.把什么放在我的灯具里?

嗨,我想对使用Devise和CanCan的Rails 3应用程序进行一些功能测试.

在我的用户模型中,我有用户年龄,我想测试用户只能访问某个页面,如果他们是:

  1. 登录
  2. 超过35岁

我在Devise文档中看到我可以使用:*sign_in*并且我把它放在我的测试中它似乎工作 - 测试没有错误,因为我有:

include Devise::TestHelpers
Run Code Online (Sandbox Code Playgroud)

在我的*test_helper.rb*

当我拿出它时,我的测试会出错,因为*sign_in*没有定义.所以这不是帮手问题.

当我运行测试并检查span#loggedin是否有一次出现时,测试失败,因为有0次出现.span#loggedin仅出现*if user_signed_in?*

我需要在我的灯具或测试中创建一个也是完全注册用户(已确认等)的测试用户?

查看代码:

<% if user_signed_in? %>
     <span id="loggedin">User is signed in</span>
     User age is <span id="age"><%= current_user.age.to_s %></span>
<% end %>
Run Code Online (Sandbox Code Playgroud)

测试代码:

test "should get index" do
    sign_in :one
    get :index
    assert_response :success
    assert_select 'span#loggedin', :count => 1
end
Run Code Online (Sandbox Code Playgroud)

夹具:

one:
 email: jez@example.com
 age: 36
Run Code Online (Sandbox Code Playgroud)

当我手动登录时,它在开发中工作正常,但我希望自动化它 - 真正的测试点!

ruby-on-rails functional-testing fixtures devise

26
推荐指数
2
解决办法
9662
查看次数

没有路线匹配[GET]"/ users/sign_out"

这是我的实际错误:No route matches [GET] "/members/sign_out" 由于大多数人会使用"用户",我认为在标题中使用它会更有帮助.无论如何,我必须无法注销.我可以成功编辑我的会员资料.

我正在使用设计1.4.2和Rails 3.1.0.rc4.此外,我已经生成了两个独立的设计模型 - 一个称为"成员",另一个称为"管理员".我能够通过手动导航到正确的URL路径(即localhost:3000/admins/sign_in /)来注册并登录它们(同时).我在我的application.html.haml布局文件中创建了一些链接,方法是在Devise上使用这个RailsCast.我知道它只涉及"成员"的登录/注销链接.

如果我点击退出链接,我会收到上述错误.如果我手动导航到任何一个注销URL(即localhost:3000/admins/sign_out /),就会发生这种情况.

有人能告诉我为什么会这样吗?以下是各种相关文件.当然,我是新手......

rake路线输出:

    j(film_repo)$ rake routes
        new_member_session GET    /members/sign_in(.:format)       {:action=>"new", :controller=>"devise/sessions"}
            member_session POST   /members/sign_in(.:format)       {:action=>"create", :controller=>"devise/sessions"}
    destroy_member_session DELETE /members/sign_out(.:format)      {:action=>"destroy", :controller=>"devise/sessions"}
           member_password POST   /members/password(.:format)      {:action=>"create", :controller=>"devise/passwords"}
       new_member_password GET    /members/password/new(.:format)  {:action=>"new", :controller=>"devise/passwords"}
      edit_member_password GET    /members/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
                           PUT    /members/password(.:format)      {:action=>"update", :controller=>"devise/passwords"}
cancel_member_registration GET    /members/cancel(.:format)        {:action=>"cancel", :controller=>"devise/registrations"}
       member_registration POST   /members(.:format)               {:action=>"create", :controller=>"devise/registrations"}
   new_member_registration GET    /members/sign_up(.:format)       {:action=>"new", :controller=>"devise/registrations"}
  edit_member_registration GET    /members/edit(.:format)          {:action=>"edit", :controller=>"devise/registrations"}
                           PUT    /members(.:format)               {:action=>"update", …
Run Code Online (Sandbox Code Playgroud)

authentication devise ruby-on-rails-3.1

26
推荐指数
11
解决办法
3万
查看次数

Rails 3 - 如何在IRB控制台中访问Devise的current_user?

我正在IRB中进行一些设计/调试,需要登录用户,然后才能在我的努力中使用current_user.

从Brian Deterling 对另一个问题的回答,我已经能够成功登录并使用以下顺序访问页面响应:

>> ApplicationController.allow_forgery_protection = false
>> app.post('/sign_in', {"user"=>{"login"=>"some-login-id", "password"=>"some-password"}})
>> app.get '/some_other_path_that_only_works_if_logged_in'
>> pp app.response.body
Run Code Online (Sandbox Code Playgroud)

注意:如果您收到200响应,则表示您尚未登录.您需要302重定向才能表示登录成功.看Tim Santeford的回答.

我已经能够得到会话信息:

1.9.3-p125 :009 > app.session
 => {"_csrf_token"=>"1yAn0jI4VWzUH84PNTH0lVhjpY98e9echQGS4=", "session_id"=>"89984667d30d0fec71f2a5cbb9017e24"} 
Run Code Online (Sandbox Code Playgroud)

我用尽了一切我能想到的,试图去current_user通过appapp.session,但没有运气.我该怎么current_user办?

session irb devise ruby-on-rails-3

26
推荐指数
1
解决办法
1万
查看次数

ActionView :: Template ::错误:缺少链接到的主机!请提供:host参数,设置default_url_options [:host],或将:only_path设置为true

我的ruby on rails动作邮件程序在开发环境中运行良好,但在生产环境中,它会保持抛出:

ActionView::Template::Error: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
Run Code Online (Sandbox Code Playgroud)

我的开发配置是

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :port           => xxx,
  :address        => 'smtp.example.org',
  :user_name      => 'xxx@example.com',
  :password       => 'xxxxxxxx',
  :domain         => 'xxxxxx.com',
  :authentication => :plain,
}

config.action_mailer.default_url_options = { :host => 'localhost:3000' }
Run Code Online (Sandbox Code Playgroud)

我的生产配置是

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :port           => 587,
  :address        => 'smtp.example.org',
  :user_name      => 'xxx@example.com',
  :password       => 'xxxxxx',
  :domain         => 'example.com',
  :authentication => :plain,
} …
Run Code Online (Sandbox Code Playgroud)

production actionmailer devise ruby-on-rails-4

26
推荐指数
1
解决办法
2万
查看次数