如何在 ASP.Net Core Razor 页面上重定向
Posted
技术标签:
【中文标题】如何在 ASP.Net Core Razor 页面上重定向【英文标题】:How to redirect on ASP.Net Core Razor Pages 【发布时间】:2018-10-21 06:11:27 【问题描述】:我在 ASP.Net core 2 中使用新的 Razor 页面 现在我需要重定向
我试过了,但是页面没有重定向:
public class IndexModel : PageModel
public void OnGet()
string url = "/.auth/login/aad?post_login_redirect_url=" + Request.Query["redirect_url"];
Redirect(url);
如何重定向?
【问题讨论】:
【参考方案1】:你们很亲密。这些方法需要返回一个IActionResult
(或Task<IActionResult>
用于异步方法),然后您需要返回重定向。
public IActionResult OnGet()
string url = "/.auth/login/aad?post_login_redirect_url="
+ Request.Query["redirect_url"];
return Redirect(url);
Razor pages documentation
但是,您有一个巨大的 Open Redirect Attack,因为您没有验证 redirect_url
变量。 请勿在生产环境中使用此代码。
【讨论】:
【参考方案2】:您可以使用 IActionResult 返回重定向或您的剃须刀页面。
public IActionResult OnGet()
if (!Auth())
return new RedirectToPageResult("/Portal/Login");
return Page();
【讨论】:
【参考方案3】:没有cs的页面也一样:
@page
@functions
public IActionResult OnGet()
string url = "/.auth/login/aad?post_login_redirect_url="
+ Request.Query["redirect_url"];
return Redirect(url);
【讨论】:
【参考方案4】:您可以使用以下代码进行操作:
public async Task OnGetAsync()
Response.Redirect("/Panel");
【讨论】:
以上是关于如何在 ASP.Net Core Razor 页面上重定向的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET Core 2.0 Razor 页面中填充下拉列表
如何在 ASP.NET Core Razor 页面中绑定复杂列表
如何使用 ASP.NET Core Razor 页面预选下拉列表中的项目
如何使用 Url.Action 在 asp.net core 2.0 razor 页面中传递多个操作