何时使用 LocalRedirect 与 RedirectToPage

Posted

技术标签:

【中文标题】何时使用 LocalRedirect 与 RedirectToPage【英文标题】:When to use LocalRedirect vs RedirectToPage 【发布时间】:2019-02-02 03:16:39 【问题描述】:

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

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

【问题讨论】:

除了 Chris 的回答之外,值得注意的是 RedirectToPage 使用代表页面的路径,因为它位于文件系统中,而 LocalRedirect 使用本地 URL。例如,使用RedirectToPage 将确保如果您修改页面的路由,则生成的 URL 将匹配正确的路由。 【参考方案1】:

LocalRedirect 应该在您处理“返回 URL”时使用,即您正在传递一个 URL,在完成某些过程(例如登录)后,用户应该被重定向回该 URL。在这样的情况下在这种情况下,恶意行为者可能会将用户发送到您的登录表单,例如,将返回 URL 返回到恶意站点。使用LocalRedirect 可确保“返回 URL”是您网站上实际存在的路由,而不是某些恶意的第三方不良行为者的路由。

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

【讨论】:

RedirectToPageLocalRedirect 不一样安全吗?因为它只适用于本地页面路径?如果是这样,当您不控制返回 url 错误时,您的观点是不是 only 使用LocalRedirect 我的回答中可能没有明确,但关键是返回 URL,而不是本地安全。 RedirectToPage 需要了解确切的页面,这不是您在请求之间传递的返回 URL 的一部分。换句话说,当您明确重定向到某个页面时,您使用 RedirectToPage。您使用 LocalRedirect,它只是一个字符串 URL 值,可能会或可能不会映射到特定页面。 将不映射到特定页面的值传递给LocalRedirect 是什么意思?那么预期的行为是什么? @yola 例如,这可能是一个控制器操作,在这种情况下,如果您愿意,您甚至无法使用 RedirectToPage。也未验证您是否可以路由到它,例如 RedirectToPage。您可以附加 /path/to/nowhere 作为 returnURL,这将通过 LocalRedirect(因为它是本地的),但当然,它会导致 404。

以上是关于何时使用 LocalRedirect 与 RedirectToPage的主要内容,如果未能解决你的问题,请参考以下文章

redi+keepalive 简单介绍

Python操作——Redi

redi事务机制

何时使用 .First 以及何时将 .FirstOrDefault 与 LINQ 一起使用?

redi安装

NoSQL与RDBMS:何时使用,何时不使用