logout应该重定向到:back,除非:back需要用户

时间:2010-08-23 05:16:01

标签: ruby-on-rails authlogic

点击退出时,我想重定向回用户所在的页面,除非该页面要求用户登录。

方案1 - “后退”需要用户 1)用户点击用户帐户页面的注销 2)重定向(最终)到root_path

方案2 - “后退”不需要用户 1)用户点击(不是用户要求的)事件页面的注销 2)重定向(最终)到events_path

有人建议我更新我的before_filter:require_use方法是这样的:

  def require_user
    unless current_user
      flash[:notice] = "You must be logged in to view this page"
      redirect_to user_coming_from_logout_method? root_path : login_path
    end 
  end 

除非我无法定义#user_coming_from_logout_method?

有人可能认为这只是:

request.referrer == "/logout"

但是在上面的示例中,request.referrer实际上是==“/ user_account”,而不是中间注销方法。很奇怪,我知道。

建议?

1 个答案:

答案 0 :(得分:0)

我认为您不能依赖浏览器在重定向上设置引荐来源。 This thread详细讨论了这个问题。

也许在注销控制器的session中设置一些东西,然后在require_user方法中进行测试然后清除?