显示站点中受登录保护部分的相关标头(奇怪的设计错误)



我网站的大部分内容都是会员专用的。这样做的缺点是,当成员相互交换链接时,例如在官方Facebook群组上,预览将仅显示通用的"我的网站",而没有任何提示他们链接到网站的哪个部分。这是因为Facebook爬虫(或任何其他爬虫(会点击登录表单,看不到更远的地方。

为了获得更相关的预览,我需要将页面标题设置为登录页面以外的页面的功能。我发现 Devise 有一个很好的方法叫做after_sign_in_path_for(User),所以我想根据这个方法的返回值做一个开关......

。突然之间,登录后没有人再被重定向了。事实证明,当您调用它时,after_sign_in_path_for(User)会擦除自己的数据,因此您无法使用它来找出页面标题并在登录后仍然重定向人员。

在研究了 Devise 的内部后,我发现的解决方案是使用session["user_return_to"].如果您尚未重新定义登录后路径,这是 Devise 从中获取它的地方。您可以检索该值,但每当调用after_sign_in_path_for(User)时,该值都会被销毁。

最新更新