Ruby on Rails - 重定向和登录或登录和重定向



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

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

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

只是跳过一个地方,一条线可能并不重要,但什么是更好,更安全,为什么或它真的不重要?

只要您为redirect_to调用提供有效的参数,顺序就无关紧要。 如果您不提供有效的参数,redirect_to将引发异常,因此auto_login不会运行,但您不会看到来自redirect_to的错误,除非您做了一些非常错误的事情,例如传入nil选项或您已经在方法中调用了redirect_to

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

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

我会先登录,然后再重定向。

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

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

相关内容

  • 没有找到相关文章

最新更新