如何在 ASP.Net Core Razor 页面上重定向

How to redirect on ASP.Net Core Razor Pages

我在 ASP.Net 核心 2
中使用新的 Razor Pages 现在我需要重定向

我试过了,但是页面没有重定向:

public class IndexModel : PageModel
{
    public void OnGet()
    {
        string url = "/.auth/login/aad?post_login_redirect_url=" + Request.Query["redirect_url"];

        Redirect(url);
    }
}

如何重定向?

你们非常亲密。这些方法需要 return 一个 IActionResult(或 Task<IActionResult> 对于异步方法)然后你需要 return 重定向。

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 变量。 不要在生产中使用此代码

没有 cs 的页面也是如此:

@page

@functions
{
    public IActionResult OnGet()
    {
        string url = "/.auth/login/aad?post_login_redirect_url=" 
          + Request.Query["redirect_url"];

        return Redirect(url);
    }
}

您可以使用 IActionResult return 重定向或您的 razor 页面。

public IActionResult OnGet()
{
     if (!Auth())
     {
         return new RedirectToPageResult("/Portal/Login");
     }
     return Page();
}

您可以使用以下代码完成:

  public async Task OnGetAsync()
  {
    Response.Redirect("/Panel");
  }

您可以直接在剃须刀视图中使用它。

    @{
if (!Context.Request.Path.Value.Contains("Identity/Account/UserMustChangePassword"))
{
     Context.Response.Redirect("Identity/Account/UserMustChangePassword");
}
}