何时使用LocalRedirect与RedirectToPage

God*_*ers 8 razor-pages asp.net-core-2.1

使用ASP.Net Core 2.1 Razor Pages,使用LocalRedirect和RedirectToPage的最佳做法是什么?

当重定向到当前网站内的页面时,它们似乎可以互换使用.一个人比另一个人有优势吗?

Chr*_*att 14

LocalRedirect当你处理一个"返回URL"时应该使用,即你传递一个URL,用户应该在某个进程完成后重定向回来,例如登录.在这种情况下,恶意的actor可以将用户发送到您的登录表单,例如,返回URL返回恶意站点.使用LocalRedirect确保"返回URL"是您网站上的实际路线,而不是某些恶意的第三方坏人.

当您直接控制用户重定向到的位置时,可以使用所有其他重定向结果类型.

  • 我的回答中可能没有明确说明,但关键是返回 URL,而不是仅限本地的安全性。RedirectToPage 需要确切页面的知识,这不是您将作为在请求之间传递的返回 URL 的一部分公开的内容。换句话说,当您显式重定向到某个页面时,您可以使用 RedirectToPage。您使用 LocalRedirect,当它只是一个字符串 URL 值时,它可能映射到特定页面,也可能不映射到特定页面。 (2认同)
  • @yola 例如,它可能是一个控制器操作,在这种情况下,如果您愿意,您甚至无法使用 RedirectToPage 。它还没有验证您是否可以路由到它,例如 RedirectToPage。您可以附加 /path/to/nowhere 作为 returnURL,这将通过 LocalRedirect (因为它是本地的),但是当然,它会导致 404。 (2认同)