web-dev-qa-db-ja.com

ASP.Net Core Razorページでリダイレクトする方法

ASP.Netコア2で新しいRazorページを使用しています
今、私はリダイレクトする必要があります

私はこれを試しましたが、ページはリダイレクトしません:

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

        Redirect(url);
    }
}

リダイレクトする方法は?

18
Tony

あなたはとても親しかった。これらのメソッドは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変数を検証していないため、巨大な Open Redirect Attack があります。 このコードを本番環境で使用しないでください

27
Erik Philips

IActionResultを使用して、リダイレクトまたはかみそりのページを返すことができます。

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

Csのないページでも同じです:

@page

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

        return Redirect(url);
    }
}
0
A K