我正在尝试使用本指南将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)
有什么好方法可以解决这个问题吗?
谢谢!
save(false)和之间有什么区别save(:validate => false)?据我所知,功能是一样的.使用的版本:validate是在api中让我相信save(false)是一个弃用的版本?在我这样做时,我想到了这个:https://github.com/plataformatec/devise/wiki/How-To : -Create-a-guest-user.指南已经save(false)在那里,但我在使用它时遇到错误.我把它切换到:validate版本,并且工作正常.
我正在使用设计确认.我想给用户一个链接,点击并重新发送确认电子邮件.问题是,当用户点击链接时,它不会进入设计控制器.在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)
谢谢
虽然这个帖子没多说,但我想你在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)
但这对我不起作用.
有谁知道这样做的正确方法?
我是一个铁杆新手...我正在尝试设置登录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 …
我需要为https://github.com/plataformatec/devise编写自定义身份验证策略,但似乎没有任何文档.怎么做的?
嗨,我想对使用Devise和CanCan的Rails 3应用程序进行一些功能测试.
在我的用户模型中,我有用户年龄,我想测试用户只能访问某个页面,如果他们是:
我在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)
当我手动登录时,它在开发中工作正常,但我希望自动化它 - 真正的测试点!
这是我的实际错误: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) 我正在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通过app和app.session,但没有运气.我该怎么current_user办?
我的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) devise ×10
ruby ×2
actionmailer ×1
facebook ×1
fixtures ×1
irb ×1
omniauth ×1
production ×1
session ×1
twitter ×1