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

标签 ruby-on-rails redirect authentication devise

在我的 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/

相关文章:

ruby-on-rails - 集成测试最佳实践

ruby-on-rails - 在 OS X 上为 ruby​​、rails 和 git 设置开发环境的好方法是什么?

ruby-on-rails - ruby on rails redirect_to(:back) not working

apache - HTaccess 重定向正在将查询添加到 URL 末尾

jquery - 如何在另一个 ajax 调用后运行一个 ajax 调用?

ruby-on-rails - Rails 3 链接到(:method => :delete) not working

ruby-on-rails - Rails验证...多个:on options?

.htaccess - htaccess 将所有流量重定向到 https ://www

php - 登录时重定向

node.js - 使用 Node 和 Express JS 防止暴力破解