gpt4 book ai didi

ruby-on-rails - Rails 3 Devise Session 有值,但如果 user_signed_in 则 <%? %> 为假

转载 作者:行者123 更新时间:2023-12-03 00:40:25 29 4
gpt4 key购买 nike

我希望你能提供帮助,我已经在这个问题上挣扎了一段时间了:|我正在使用 devise 和 Rails 3

当我单击“登录”时,我会看到设备“登录”页面,输入用户名和密码,然后单击“登录”。

单击“登录”后,我被重定向到主页,但现在我仍然看到“登录”链接,这意味着 <% if user_signed_in? %> 仍然是假的。但是我登录后session变量里好像有一些值,这是怎么回事?我已经使用该设备一段时间了,之前没有遇到过任何问题。谢谢大家!

<小时/> 在我使用 devise 登录之前

<%= session %>
no value

<% if user_signed_in? %>
**is false**
<小时/>

使用 devise 登录后

<%= session %>
_csrf_tokenAMUwVLu6G6rWfKICB43PYApFsYFRjVyJDSc2oU88uEk=warden.user.user.keyUser342$2a$10$.zslfggeUqvq.m/5LNSolOsession_id0db80c26bc36a4c1c74c223655dcb092

<% if user_signed_in? %>
**is false**
<小时/>

编辑:

我的routes.rb文件

Cybercellar3::Application.routes.draw do
devise_for :users

get "home/index"


<% if signed_in? %>
**is still false**
<小时/>

编辑2:

用户.rb

class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable

# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
end

我想我在我的一个 Controller 中发现了问题

application_controller.rb

    #facebook stuff
def current_user
@current_user ||= User.find_by_id(session[:user_id])
end

def signed_in?
!!current_user
end

helper_method :current_user, :signed_in?

def current_user=(user)
@current_user = user
session[:user_id] = user.id
end
#facebook stuff

在我删除这个 block 后,它似乎工作得很好:)

最佳答案

Devise 有一个“范围”的概念,以便您可以同时登录多种类型的用户,例如管理员用户和普通用户。要检查任何范围的用户是否已登录,请使用signed_in?。范围由模型类和routes.rb 文件的命名来定义。确保它们匹配。您可以同时发布两个吗?要对此进行测试,您还可以尝试集成测试。

关于ruby-on-rails - Rails 3 Devise Session 有值,但如果 user_signed_in 则 <%? %> 为假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9289780/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com