重定向和登录或登录和重定向?

时间:2013-01-22 16:48:22

标签: ruby-on-rails ruby ruby-on-rails-3 sorcery

简单的问题。什么是首选的,为什么,或根本不重要? 巫术宝石的例子:

if @user.save
  redirect_to index_path
  auto_login(@user)

OR

if @user.save
  auto_login(@user)
  redirect_to index_path

只是跳过一个地方,一行不是那么重要,但更好,更安全,为什么或者它真的不重要?

2 个答案:

答案 0 :(得分:0)

只要您为redirect_to电话提供有效参数,订单就不重要了。如果您不提供有效参数,redirect_to将抛出异常,因此auto_login将无法运行,但您不会看到来自redirect_to的错误,除非您做了一些非常错误的事情传入nil个选项,或者您已经在方法中调用了redirect_to

我更倾向于让redirect_to最后来,因为从控制流的角度来看它是有意义的。它可以让您大致了解Rails在执行控制器操作中的所有代码后将带您到哪里,这也可能有助于阻止您多次调用redirect_to并导致DoubleRenderError

如果您查看redirect_to documentation并点击“显示来源”链接,您可以看到它基本上只设置变量,因此您可以随时在任何地方调用它。 redirect_to看起来类似于您在其他语言中看到的return语句,但它不像一个语句,所以请记住这一点。这只是一种在控制器上设置某种状态的方法。

答案 1 :(得分:0)

我先登录然后重定向。

您要重定向到的位置可能取决于登录用户。它可能不适用于您的情况,但在其他情况下也可能,并且可能在以后的应用程序开发中。

例如,如果索引路由已更改,以便根据用户是否登录而转到其他位置,则无论您是在重定向之前还是之后登录,这都很重要。如果您在重定向后登录,那么您将重定向到未登录用户的路由版本。