0

我正在尝试向locomotivecms ( github ) 添加一个简单的功能。一个非常简单的功能:当前用户在登录后被重定向到“主管理中心”(/admin/)——即使他们试图编辑不同的页面。我希望他们在登录后被定向到该页面。

添加这似乎是一件非常简单和合理的事情,但经过两天的尝试,我决定寻求帮助。

这是我到目前为止所发现的。

  • 这个应用程序没有使用 ActiveRecord,而是 Mongoid(后端数据库是 MongoDB)
  • Locomotive 不使用简单的“用户”模式。身份验证分为两部分:“帐户”(电子邮件、密码、姓名等)和“站点”(它是一个多站点 cms)。一个“站点”有许多“成员”。成员资格有一个 site_id 和 account_id (还有一个角色,但我认为这并不重要)。
  • 机车中的大部分“动作”都在/admin/路线后面。例如,登录路径是/admin/log_in. 大多数控制器也在一个/admin/子文件夹中。
  • 我在显然“修复”了登录到根目录后要访问的 url 中发现了这一点。/admin/sessions_controller/admin/

这是相关的位:

def after_sign_in_path_for(resource)
  admin_pages_url
end

我几乎可以肯定我需要的是这个:

def after_sign_in_path_for(resource)
  stored_location_for(resource) || admin_pages_url
end

如果我正确理解了 Devise 的文档,stored_location_for则在会话中搜索一个值(session['admin_return_to']在 Locomotive 的情况下)以“查看是否有人想回到某个地方”。如果为空,|| 确保通往管理员根目录的安全路径。

不幸的是,这不起作用。似乎从未设置过我需要的会话变​​量。我假设 Devise 会自动执行这种操作。

我必须自己设置会话值吗?如果有,在哪里?还是我的假设是错误的?

非常感谢!

4

1 回答 1

0

最好的解决方案是更新到最新版本的 LocomotiveCMS。

于 2012-07-13T21:04:40.093 回答