ruby-on-rails - 使用 Devise 在 Rails 应用程序中有条件地注销

标签 ruby-on-rails ruby-on-rails-3 session devise

我正在创建一个 Rails 应用程序,用户可以在其中登录并查看各种页面。有些是私有(private)的,有些是公共(public)的。如果用户在查看私有(private)页面时注销,他应该被重定向到 root_path。如果用户在查看公共(public)页面时注销,他应该被重定向到同一页面(在他注销后呈现略有不同)。

我想在我的 application_controller 的 after_sign_out_path_for(resource_or_scope) 方法中使用条件语句来执行此操作。问题是通常从 pages_controller 文件访问的 @page 变量为 nil 和/或在此范围内不可用。在 session 被销毁后从不同的 Controller 访问这个变量(最后加载的页面)的最佳方法是什么?

谢谢。

最佳答案

您可以跟踪 session 变量中的最后一页,并在过滤器之前添加以使其在页面 Controller 中保持最新。

session[:last_page_visited] = @page

您还可以访问 request.referrer,这将为您提供他们退出页面的 URL。不确定您是否可以从中确定私有(private)/公共(public),也许使用正则表达式?

关于ruby-on-rails - 使用 Devise 在 Rails 应用程序中有条件地注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12698397/

相关文章:

ruby-on-rails - 在共享示例调用中的 let 中使用循环变量

node.js - 如何在 ReactJs API 调用上维护 Node 后端的 session

c# - 如何关闭 Web 服务调用的持久连接

php - 对特定用户执行查询/任务

ruby-on-rails - 获取 "private method ` 需要'调用 :params:Symbol"when trying to save my object

ruby-on-rails - rails : How to downcase non-English string?

ruby-on-rails-3 - 如何国际化 CoffeeScript 中的值

ruby-on-rails - 用于自动迁移引擎迁移的 Rake 任务

ruby-on-rails-3 - 如何获取应用程序配置 key ?

ruby-on-rails - 在 check_box_tag 的 onclick 函数中传递 rails 变量