簡體   English   中英

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

[英]How to redirect on ASP.Net Core Razor Pages

我在 ASP.Net core 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);
    }
}

如何重定向?

你非常接近。 這些方法需要返回IActionResult (或Task<IActionResult>用於異步方法),然后您需要返回重定向。

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

    return Redirect(url);
}

Razor 頁面文檔

但是,您有一個巨大的開放重定向攻擊,因為您沒有驗證redirect_url變量。 不要在生產中使用此代碼

您可以使用 IActionResult 返回重定向或您的剃刀頁面。

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

沒有 cs 的頁面相同:

@page

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

        return Redirect(url);
    }
}

你可以用這個代碼做到這一點:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM