gpt4 book ai didi

ruby-on-rails - 使用 Devise 身份验证和 Rails 登录后用户帖子丢失?

转载 作者:行者123 更新时间:2023-12-04 18:10:12 24 4
gpt4 key购买 nike

在我的 Rails 应用程序(使用设计身份验证)中,任何人都可以开始创建帖子,但如果在点击保存/创建/发布时未登录,他们首先必须创建用户名或登录 = 完美。

我的代码:

 before_filter :authenticate_user!, :except => [:show, :index, :new, :edit]

可悲的是,一旦他们登录,它就会重定向到索引页面或返回到帖子,但一切都消失了,随后用户必须重新开始。

如何更改重定向以及如何防止再次登录后帖子丢失?

我知道它与以下内容有关:

  def after_sign_up_path_for(resource)
new_user_confirmation_path
end

最佳答案

HTTP is stateless - post 参数(以及所有其他参数)仅对一个请求有效。基本上,http 无法知道在重定向之前传输了哪些参数。

这就是 session 可能派上用场的地方 - 您可以在 Controller 中执行类似的操作来解决这两个问题。

before_filter :authenticate_user!, :except => [:show, :index, :new, :edit, :create]
# include create action inside except hash

def create
if !user_signed_in? # check whether user is logged in manually
session[:post] = params[:post] # assign post data to session if not
redirect_to new_user_session_path
else
# ...
end
end

有了那个 session ,http 就变成了“有状态的”,因为您的 session 哈希在多个请求中都可用(直到您销毁它)。

然后,当用户登录后,使用表单中的 session 预填充表单字段。

关于ruby-on-rails - 使用 Devise 身份验证和 Rails 登录后用户帖子丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15723620/

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