programing

ASP에서 리디렉션하는 방법.넷코어 레이저 페이지

topblog 2023. 9. 5. 19:32
반응형

ASP에서 리디렉션하는 방법.넷코어 레이저 페이지

저는 ASP의 새로운 레이저 페이지를 사용하고 있습니다.넷코어 2
이제 리디렉션해야 합니다.

시도했지만 페이지가 리디렉션되지 않습니다.

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);
}

레이저 페이지 설명서

하지만, 당신은 그것을 검증하지 않았기 때문에 거대한 오픈 리다이렉트 공격을 가지고 있습니다.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");
  }

당신은 이것을 면도기 뷰에서 직접 사용할 수 있습니다.

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

언급URL : https://stackoverflow.com/questions/50281937/how-to-redirect-on-asp-net-core-razor-pages

반응형