Ruby on rails 验证用户身份!在spree(spree commerce)中,当用作before_过滤器时,Desive无法按预期工作

Ruby on rails 验证用户身份!在spree(spree commerce)中,当用作before_过滤器时,Desive无法按预期工作,ruby-on-rails,devise,spree,Ruby On Rails,Devise,Spree,我将Rails(3.2.6)与Desive(2.1.2)一起使用,并且有一个控制器,我希望在继续操作之前确保对用户进行身份验证 乐观地说,我试着 module Spree class MyAppController < Spree::BaseController before_filter :authenticate_user! ...remainder of MyAppController code... 模块狂欢 类MyAppController

我将Rails(3.2.6)与Desive(2.1.2)一起使用,并且有一个控制器,我希望在继续操作之前确保对用户进行身份验证

乐观地说,我试着

module Spree
class MyAppController < Spree::BaseController

before_filter :authenticate_user!

...remainder of MyAppController code...
模块狂欢
类MyAppController
我不会被重定向到登录或登录页面。我被重定向到“产品”页面,顶部有一条礼貌的消息,说我需要登录或注册才能继续

我希望发生的是,我被重定向到注册/登录,成功完成后,原始控制器路径恢复

四处搜索,我读到了那个用户!from Deave与Spree的交互方式会导致无限重定向,因此Spree中的某些内容会禁用此功能,从而导致我上面描述的跛脚行为


有没有人能做到这一点,或者对如何解决这个问题有什么建议?

我找到了一个解决方案,但我不是一个经验丰富的Rails开发人员,不知道这个解决方案有多合理

我写了一个方法来做过滤,并用它来代替认证用户

def require_authentication
  unless current_user 
    # setting this in the session allows devise to return us to
    # the original invocation path, once sign up / sign in is complete
    session[:user_return_to] = request.env['PATH_INFO']
    redirect_to new_user_session_url and return 
  end 
end
你有没有试着添加

before_filter :check_authorization
给你的控制器

我想这可能正是你想要的

谢谢


艾熙

我会考虑到这一严重性,保证对施普雷河项目本身进行错误报告。你能在那里存档吗。感谢Ash,这应该会起作用-但行为方式与上面相同(导航到Spree主页(产品),并向我提供有关需要登录或注册才能继续的消息)。显然,我的代码库中有一些邪恶的东西。这是一个我继承的项目,我不是一个有经验的RoR开发人员,所以我需要用一个小测试用例来隔离这个行为。不幸的是,我有一个迫在眉睫的最后期限和一个变通办法,所以我不确定什么时候我能做到这一点。再次感谢你的帮助。