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

身份验证 – 找不到id = 1的用户

发布时间:2020-12-17 04:04:33 所属栏目:百科 来源:网络整理
导读:我有一个current_user方法来处理身份验证. application_controller.rb protect_from_forgeryhelper_method :current_userdef current_user @current_user ||= User.find(session[:user_id]) if session[:user_id]end 但是当我尝试访问某个页面时,我收到以下
我有一个current_user方法来处理身份验证.

application_controller.rb

protect_from_forgery
helper_method :current_user

def current_user
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
end

但是当我尝试访问某个页面时,我收到以下错误:

Couldn't find User with id=1
app/controllers/application_controller.rb:10:in `current_user'

如何将@current_user传递给某种默认值,这样如果没有用户,它将重定向到登录页面.

谢谢你的帮助.

解决方法

看起来您的会话包含旧数据,特别是不再存在的用户的id(1).尝试处理ActiveRecord引发的RecordNotFound异常,并返回nil:

def current_user
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
    rescue ActiveRecord::RecordNotFound
end

要重定向,您应该添加第二个before_filter,它检查用户并处理重定向到登录路径:

before_filter :require_user

def require_user
  redirect_to login_path unless current_user
end

请记住通过将skip_before_filter:require_login添加到管理您的身份验证的控制器来省略require_user以进行登录操作.

(编辑:李大同)

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

    推荐文章
      热点阅读