2017-08-01 45 views
0

您好我正在創建我的第一個項目在Asp.net核心,我需要登錄到他的上一頁後重定向用戶。例如,如果他將觀看頁面「關於」,那麼他將要登錄,登錄後我需要他重定向到「關於」頁面。 這是我在Controller中的代碼。 。如何在登錄後獲取上一頁

// 
    // GET: /Account/Login 
    [HttpGet] 
    [Route("/Account/Login")] 
    [AllowAnonymous] 
    public IActionResult Login(string returnUrl = null) 
    { 
     try 
     { 
      if (_signInManager.IsSignedIn(User)) 
       _signInManager.SignOutAsync(); 


      ViewData["ReturnUrl"] = returnUrl; 

      return View("Login"); 
     } 
     catch (Exception e) 
     { 
      return ExceptionActionResult(e); 
     } 
    } 

我試圖使用Request.Headers [ 「Referer的」]的ToString();但問題是前一頁是登錄頁面。我試圖把這個方法//獲取登錄但我不知道如何將字符串發送到//帖子登錄

// POST: /Account/Login 
    [HttpPost] 
    [Route("/Account/Login")] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null) 
    { 
     try 
     { 
      //Nesmi byt prihlasen 
      if (_signInManager.IsSignedIn(User)) 
       return ErrorActionResult("User is already Signed"); 

      // string var = Request.Headers["Referer"]; 
       string var = Request.Headers["Referer"].ToString(); 

      ViewData["ReturnUrl"] = returnUrl; 
      if (ModelState.IsValid) 
      { 

       set lockoutOnFailure: true 
       var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: true); 
       if (result.Succeeded) 
       { 

        return RedirectToLocal(returnUrl); 
       } 
       if (result.IsLockedOut) 
       { 
        _logger.LogWarning(2, "someString"); 
        ModelState.AddModelError("UserName", "someString"); 
        return View("Lockout"); 
       } 
       else 
       { 
         _logger.LogWarning(2, "someString"); 
         ModelState.AddModelError(string.Empty, "Invalid Password or Mail"); 
        } 


        return View(model); 

      } 

      // If we got this far, something failed, redisplay form 
      return View(model); 

     } 
     catch (Exception e) 
     { 
      return ExceptionActionResult(e); 
     } 
    } 

如果你有什麼需要或者如果你不理解我問我瞭解詳情。我會很樂意提供任何幫助。

回答

0

你可以嘗試下面的東西。假設動作鏈接有關看起來像下面

<a href="/Home/About">About</a> 

現在,當用戶點擊關於他將被重定向頁面是下面登錄頁面,因爲它是一個GET請求的URL會鏈接到About page

enter image description here

:它會在 string returnUrl

public ActionResult Login(string returnUrl) 
    { 
      ViewBag.ReturnUrl = returnUrl; 
      return View(); 
    } 

查看網址被捕獲

現在就重定向而言,以下是login.cshtml的代碼。注意當表單處於POSTED狀態時我們如何發送returnURl as Anonymous Object

@using (Html.BeginForm("Login", "Account", new { ReturnUrl = 
ViewBag.ReturnUrl }, FormMethod.Post)){ 
     @*LOGIN PAGE RAZOR LOGIC*@ 
} 

登錄POST控制器動作

[HttpPost] 
    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) 
    { 
     return RedirectToLocal(returnUrl); 
    } 
相關問題