我正在使用Rails(3.2.6)和devise(2.1.2)并且有一个控制器,我希望确保用户在继续之前进行身份验证。
乐观地说,我试过......
module Spree
class MyAppController < Spree::BaseController
before_filter :authenticate_user!
...remainder of MyAppController code...
我没有重定向到登录页面或登录页面。我被重定向到“产品”页面,顶部有礼貌的消息说我需要登录或注册才能继续。
我喜欢发生的事情是我被重定向到注册/登录,当成功完成后,原始控制器路径将恢复。
搜索,我已经读过authenticate_user!来自Devise的Spree以一种导致无限重定向的方式与Spree进行交互,因此Spree中的某些东西禁用了这个,导致我上面描述的蹩脚行为。
有没有人设法让这个工作或有一个好的解决方案的建议?
答案 0 :(得分:1)
我找到了一个解决方案,但我不是一个经验丰富的Rails开发人员,不知道这个解决方案有多合理。
我写了一个方法来进行过滤并使用它来代替authenticate_user!...
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
答案 1 :(得分:1)
你尝试添加
吗?before_filter :check_authorization
到您的控制器?
我认为这可以做你想要的。
由于
灰