【问题标题】:rails specify method for redirect_torails 为 redirect_to 指定方法
【发布时间】:2009-07-30 03:24:47
【问题描述】:

在发布新模型时,我正在通过 Authlogic 检查身份验证。创建请求上有一个before_filter。它正在调用require_user。成功创建用户会话后,将调用redirect_back_or_default(default) 方法。问题是,请求需要发布到存储的 uri。我试图存储该方法并将其输入到redirect_to 但它不起作用。有什么想法吗?

# called before successful authentication with before_filter
def require_user
  unless current_user
    store_location
    flash[:notice] = "You must be logged in to access this page"
    redirect_to new_user_session_url
    return false
  end
end

def store_location
  session[:return_to] = request.request_uri
  session[:return_to_method] = request.request_method
end

# called after successful authentication
def redirect_back_or_default(default)
  redirect_to((session[:return_to] ? session[:return_to] : default), :method => session[:return_to_method])
  session[:return_to] = nil
  session[:return_to_method] = nil
end

【问题讨论】:

    标签: ruby-on-rails ruby authentication routing authlogic


    【解决方案1】:

    您不能重定向到发布操作,只能获取操作。

    【讨论】:

      【解决方案2】:

      可以存储 post 对象以供身份验证后的后续处理,但您真的不想这样做。

      为什么不简单地要求对#new 方法进行身份验证,而不是(或附加于)#create 方法?这样,用户在填写表单之前就已经过身份验证。

      【讨论】:

      • 感谢您的回答。我最终做的是向模型添加授权状态。我允许未登录且初始状态无效的未经授权用户创建。然后在创建操作中,如果他们未登录,它将存储显示操作的路径并重定向到登录/新用户页面。如果他们不登录,模型将永远不会得到验证,并将在以后的 rake 任务中收获。如果他们确实登录了,他们将被重定向回 show 操作,如果模型是由他们创建并且他们已登录,则该操作将“授权”模型。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2015-04-12
      • 2010-11-03
      • 1970-01-01
      相关资源
      最近更新 更多