新手问题 rails 6 中 Session 的存值和取值

samport · 2019年11月06日 · 最后由 dayudodo 回复于 2020年08月10日 · 2598 次阅读

最近将一个 rails5 的项目升级到 rails6,碰到一个登录不了的问题,排查后发现保存不了数据到 session 里,导致登录状态无法保存。请求指导,感谢!

部分代码如下:

# 用户名及密码验证成功后,将admin id写入到session
 def sign_in(admin)
   session[:admin_id] = admin.id  # 这里向session中写入数据
   admin.update(last_login_ip: request.remote_ip, last_login_at: Time.now)
   # 。。。
 end


# 获取当前用户
def current_admin
   if (admin_id = session[:admin_id])   # 这里读取session中的数据。rails 6时取出来为空,rails 5没有这个问题
       # 。。。
   end
 end 

# session_store.rb里面的配置
Rails.application.config.session_store :cookie_store, key: '_mytest_session', expire_after: 7.days

各种尝试后,都没有找到 session 不能写入的原因。最后用了一个最笨的办法,用rails new新建一个干净的 rails 6 项目,然后将旧项目代码逐步复制到新项目里,结果能够正常运行了。

老项目从 rails 5 升级到 6,与其靠各种 update 命令行进行升级,可能还真不如新建一个项目,然后手工一步一步的进行排查和迁移。

samport 回复

哈,我一直是这么干的,从 rails3,4,5 直到 6。从来没用过什么 update, 我的小理论是,车用久了修的再好也不如重新买一辆。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号