How to redirect on ASP.Net Core Razor Pages

前端 未结 3 1153
無奈伤痛
無奈伤痛 2020-12-11 00:28

I am using the new Razor Pages in ASP.Net core 2
Now I need to redirect

I tried this, but the page does not redirect:

public class IndexModel : P         


        
相关标签:
3条回答
  • 2020-12-11 00:41

    You can use the IActionResult to return a redirection or your razor page.

    public IActionResult OnGet()
    {
         if (!Auth())
         {
             return new RedirectToPageResult("/Portal/Login");
         }
         return Page();
    }
    
    0 讨论(0)
  • 2020-12-11 00:46

    Same for pages without cs:

    @page
    
    @functions
    {
        public IActionResult OnGet()
        {
            string url = "/.auth/login/aad?post_login_redirect_url=" 
              + Request.Query["redirect_url"];
    
            return Redirect(url);
        }
    }
    
    0 讨论(0)
  • 2020-12-11 01:07

    You were very close. These methods need to return an IActionResult (or Task<IActionResult> for async methods) and then you need to return the redirect.

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

    Razor pages documentation

    However, you have a huge Open Redirect Attack because you aren't validating the redirect_url variable. Don't use this code in production.

    0 讨论(0)
提交回复
热议问题