2017-08-01 46 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); 
    } 
相关问题