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

ruby-on-rails – user_signed_in?总是返回false

发布时间:2020-12-17 03:47:02 所属栏目:百科 来源:网络整理
导读:我一直关注这些轨道广播 http://railscasts.com/episodes/209-introducing-devise http://railscasts.com/episodes/233-engage-with-devise 对于用户身份验证,但每当我尝试查看用户是否已登录时,响应始终为false. 我尝试了很多东西来尝试修复这个问题.我尝试
我一直关注这些轨道广播

http://railscasts.com/episodes/209-introducing-devise&&
http://railscasts.com/episodes/233-engage-with-devise
对于用户身份验证,但每当我尝试查看用户是否已登录时,响应始终为false.

我尝试了很多东西来尝试修复这个问题.我尝试了不同版本的devise和devise_rpx_connectable.我尝试在配置文件中更改设置.我尝试用不同的宝石版本运行’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

这是我的initializers / 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

– 经过评论后的评论—
我做了rails g migration add_rpx_to_users rpx_identifier:string

并运行rake db:migrate on this:

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

如果有人有任何想法,请分享.我一整天都在努力解决这个问题.

非常感谢你!

解决方法

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

(编辑:李大同)

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

    推荐文章
      热点阅读