관리 메뉴

웹개발자의 기지개

[ASP.Net Core] 로그인한 다음 이전페이지로 자동 이동 ReturnUrl 기능구현하기 본문

ASP.NET/ASP.NET Core

[ASP.Net Core] 로그인한 다음 이전페이지로 자동 이동 ReturnUrl 기능구현하기

http://portfolio.wonpaper.net 2023. 5. 13. 18:27

로그인한다음 이전페이지로 자동 이동시키는 방법을 ASP.Net Core 에서도 만들어 보았다.

 

일단 Get방식으로 넘길 returnUrl 값을 아래와 같이 로그인페이지로 이동할때 붙여준다. 

/Member/Login?returnUrl=/Mypage/OrderList

 

그리고, 다음의 로그인 처리부분의 Controller 에서

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[Route("login"), Route("/Member/Login")]
[HttpGet]
[AllowAnonymous]
public IActionResult Login(string? returnUrl = null)
{
    ViewBag.ReturnUrl = returnUrl;
    return View();
}
 
 
[Route("login"), Route("/Member/Login")]
[HttpPost]
[AllowAnonymous]
public async Task<IActionResult> Login(string member_id, string passwd)
{
    if (ModelState.IsValid)
    {
 
 
        string returnUrl = HttpContext.Request.Query["returnUrl"];
        if (!String.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl))
            return LocalRedirect(returnUrl);
        else
            return LocalRedirect("/Main/Index");
 
 
    }
    else
    {
        TempData["dup"= "로그인 정보가 정확하지 않습니다.\\n확인하신 다음 다시 시도해 주십시오.";
        return View("Login");
    }
 
}
cs

핵심은 20,21,22,23 라인이다.

 

GET 방식으로 보내기 때문에 

HttpContext.Request.Query["returnUrl"] 이런식으로 변수를 받을 수 있고, 이를 LocalRedirect 하여 주소값으로 바로 넘겨준다.

Comments