核心网站时,我使用的用户认证标准设计配置。在routes.rb中:设计和CURRENT_USER问题使用命名空间
devise_for :users
现在,我有一个名称空间,让称之为“帧”,经由远程页上的小窗口(或iframe)有些控制器用于显示的一些看法。 我需要在框架内进行身份验证的用户,所以我嵌套devise_for声明:
namespace :frame do
devise_for :users
resources :albums, :only => :show do
resources :photos, :only => [:new, :create, :show]
end
end
为了使整个事情的工作,我需要建立适当的控制器:
class Frame::SessionsController < ::Devise::SessionsController
layout "frame"
end
现在我使用以下路径以显示表格:
new_frame_user_session_path
然而,当我通过框架登录时,* current_user *为零,而我有* current_frame_user *。这很糟糕,因为通过核心网站(* current_user *)登录的用户应该可以通过框架和反向访问(在一个浏览器中)。
是否有一个小调整才达到它,或者我应该改变整个的方法呢?谢谢你的帮助。
我怀疑是Rails会处理iframe和周围的页面,好像他们是两个不同的浏览器,所以你将不能够从框架的,反之亦然访问页面的'current_user'。只是一个预感。 – Russell
其实iframe在本任务中与我无关(我使用通过javascript打开的窗口)。当我在核心站点上登录时,可以在该窗口中访问current_user。 –
为什么要在第一个地方添加命名空间?如果您只想拥有一个独特的URL,则可以向devise_for调用添加路径选项...您可以通过将devise_for的控制器选项添加到单独的名称空间中,从而将控制器保留在独立的名称空间中。 – HakonB