Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 何时使用LocalRedirect vs RedirectToPage_Asp.net Core_Razor Pages_Asp.net Core 2.1 - Fatal编程技术网

Asp.net core 何时使用LocalRedirect vs RedirectToPage

Asp.net core 何时使用LocalRedirect vs RedirectToPage,asp.net-core,razor-pages,asp.net-core-2.1,Asp.net Core,Razor Pages,Asp.net Core 2.1,对于ASP.Net Core 2.1 Razor页面,使用LocalRedirect()与使用RedirectToPage()的最佳实践是什么 当重定向到当前网站内的页面时,它们似乎可以互换使用。一个比另一个有优势吗?LocalRedirect应该在处理“返回URL”时使用,即在某个过程(如登录)完成后,您传递一个用户应该重定向回的URL。在这种情况下,恶意参与者可能会将用户发送到您的登录表单,例如,将返回URL发送回恶意站点。使用LocalRedirect可以确保“返回URL”实际上是站点上的

对于ASP.Net Core 2.1 Razor页面,使用
LocalRedirect()
与使用
RedirectToPage()
的最佳实践是什么


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

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


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

除了Chris的回答之外,值得注意的是,
RedirectToPage
使用一个路径表示文件系统中的页面,而
LocalRedirect
使用一个本地URL。使用
RedirectToPage
可以确保,例如,如果您修改页面的路由,则生成的URL将匹配正确的路由。难道
RedirectToPage
LocalRedirect
一样安全吗?因为它只适用于本地页面路径?如果是这样的话,当你不控制返回url时,你不是只使用
LocalRedirect
吗?我的回答中可能没有明确说明,但关键点是返回url,而不是仅本地安全。RedirectToPage需要知道确切的页面,而不是在请求之间传递的返回URL中公开的内容。换句话说,当您显式重定向到某个页面时,使用RedirectToPage。使用LocalRedirect时,它只是一个字符串URL值,可能映射到特定页面,也可能不映射到特定页面。将一个未映射到特定页面的值传递到
LocalRedirect
,这是什么意思?那么预期的行为是什么?@yola它可能是一个控制器操作,例如,在这种情况下,如果您愿意,甚至不能使用RedirectToPage。也没有验证您是否可以路由到它,如重定向Topage。您可以将/path/to/nowhere附加为returnURL,这将通过LocalRedirect(因为它是本地的),但当然,这将导致404。