【问题标题】:user_signed_in? always returns false用户签名?总是返回 false
【发布时间】:2012-09-03 02:23:06
【问题描述】:

我一直在关注这些 railscasts

http://railscasts.com/episodes/209-introducing-devise && http://railscasts.com/episodes/233-engage-with-devise 对于用户身份验证,但是每当我尝试查看用户是否登录时,响应总是错误的。

我尝试了很多方法来解决这个问题。我尝试了不同版本的 devise 和 devise_rpx_connectable。我尝试在配置文件中更改设置。我尝试使用不同的 gem 版本多次运行“rails generate devise:install”。

奇怪的是,当我将 RPXNow.api_key 更改为伪造的东西时,我没有收到错误,这是意外行为。

这是我的 application.html.erb 文件中的代码:

<% if user_signed_in? %>
    Signed in as <%= current_user.email %>. Not you?
    <%= link_to "Sign out", destroy_user_session_path %>
<% else %>  
    <%= link_to_rpx "Sign in", user_session_url %>
<% end %>
<%= javascript_include_rpx(root_url) %>

这是我的用户模型 user.rb 文件中的代码

class User < ActiveRecord::Base
    devise :database_authenticatable, :registerable,
           :recoverable, :rememberable, :trackable, :validatable, :rpx_connectable

    attr_accessible :email, :password, :password_confirmation

    validates :email, :uniqueness => true
    .....other stuff....
end

这是我的 Gemfile 的一部分:

gem 'rails', '3.2.6'

gem 'devise','2.0.0'
gem 'devise_rpx_connectable'

这将获得 devise_rpx_connectable gem 版本 0.2.2

这是我的初始化程序/devise.rb 文件中的内容:

Devise.setup do |config|
    config.mailer_sender = "please-change-me-at-config-initializers-devise@example.com"
    config.apply_schema = false
    require 'devise/orm/active_record'
    config.case_insensitive_keys = [ :email ]
    config.strip_whitespace_keys = [ :email ]
    config.skip_session_storage = [:http_auth]
    config.stretches = Rails.env.test? ? 1 : 10
    config.reconfirmable = true
    config.use_salt_as_remember_token = true
    config.reset_password_within = 6.hours
    config.sign_out_via = :delete
    config.rpx_application_name = "appname"
    RPXNow.api_key = "<any_key_we_want_apparently>"
end

这是在我们的 routes.rb 文件中:

AppName::Application.routes.draw do
    root :to => "pages#home"
    match 'users/:id' => "users#index" 
    devise_for :users
end

--ply 评论后编辑-- 我做了 rails g migration add_rpx_to_users rpx_identifier:string

然后运行 ​​rake db:migrate :

class AddRpxToUsers < ActiveRecord::Migration
    def change
        add_column :users, :rpx_identifier, :string
    end
end

如果有人有任何想法,请分享。我整天都在为这个问题苦苦挣扎。

非常感谢!

【问题讨论】:

  • 您是否记得在您的用户模型中为 rpx_identiifer....添加一个字段,然后迁移?
  • 我有相同的user_signed_in?总是返回错误的问题。请帮忙! stackoverflow.com/questions/20044080/…

标签: ruby-on-rails devise janrain rpx


【解决方案1】:

这可能是因为您可能已经在应用程序控制器中使用 current_user 方法。因此,该设计不会看到它的 current_user 方法的实现,因此它总是为其辅助方法返回 false。只需删除或重命名您正在使用的 current_user 方法即可解决问题。

【讨论】:

  • 我希望我能更多地投票,我有自己的身份验证系统并切换到设计并忘记删除我自己的 curren_user 助手,这让我自己头疼了大约 2 小时:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 2021-11-05
  • 2018-11-05
  • 2019-05-06
  • 2017-04-29
  • 2013-04-30
相关资源
最近更新 更多