我正在尝试向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 会自动执行这种操作。
我必须自己设置会话值吗?如果有,在哪里?还是我的假设是错误的?
非常感谢!