认证前获取目标路径
Get target path before authentication
我在 rails 应用程序中使用 Devise 进行用户身份验证,因此某些路由包含在 authenticate 标记中以仅允许登录用户访问。
authenticate :user do
post '/user/orders/new', to: 'user/orders#new', as: :new_user_order
end
例如,当用户在未登录的情况下尝试创建新订单时,他们将被重定向到登录页面。
我想要的是让用户在登录后被定向到新的订单页面。
目前,我们使用 request.referrer
将用户重定向回他们在尝试创建新订单之前所在的页面。在被发送到登录之前,我似乎无法找到一种方法来获取他们的目标路径。
有人知道我该怎么做吗?
谢谢
您需要在控制器中提供用于用户身份验证的前过滤器,并且不要在路由中提及它。只需将以下代码放入控制器中,如果用户未登录,它应该重定向到注册 -
before_filter :authenticate_user
你需要覆盖 Devise 的 after_sign_in_path_for(resource_or_scope)
方法,你可以在应用程序控制器中完成
def after_sign_in_path_for(resource_or_scope)
# new_order_path
end
希望对您有所帮助!
您可以保留最后一个 url - 在会话 [:bookmark] 中并通过执行类似的操作 -
prepend_before_filter :set_bookmark
def set_bookmark
session[:bookmark] = request.url
end
并且在 SessionsController 中,您可以使用 session[:bookmark] 的值(如果存在)或 after_sign_in_path_for
我在 rails 应用程序中使用 Devise 进行用户身份验证,因此某些路由包含在 authenticate 标记中以仅允许登录用户访问。
authenticate :user do
post '/user/orders/new', to: 'user/orders#new', as: :new_user_order
end
例如,当用户在未登录的情况下尝试创建新订单时,他们将被重定向到登录页面。
我想要的是让用户在登录后被定向到新的订单页面。
目前,我们使用 request.referrer
将用户重定向回他们在尝试创建新订单之前所在的页面。在被发送到登录之前,我似乎无法找到一种方法来获取他们的目标路径。
有人知道我该怎么做吗?
谢谢
您需要在控制器中提供用于用户身份验证的前过滤器,并且不要在路由中提及它。只需将以下代码放入控制器中,如果用户未登录,它应该重定向到注册 -
before_filter :authenticate_user
你需要覆盖 Devise 的 after_sign_in_path_for(resource_or_scope)
方法,你可以在应用程序控制器中完成
def after_sign_in_path_for(resource_or_scope)
# new_order_path
end
希望对您有所帮助!
您可以保留最后一个 url - 在会话 [:bookmark] 中并通过执行类似的操作 -
prepend_before_filter :set_bookmark
def set_bookmark
session[:bookmark] = request.url
end
并且在 SessionsController 中,您可以使用 session[:bookmark] 的值(如果存在)或 after_sign_in_path_for