Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何在登录后获取上一页_Asp.net Mvc_Asp.net Core - Fatal编程技术网

Asp.net mvc 如何在登录后获取上一页

Asp.net mvc 如何在登录后获取上一页,asp.net-mvc,asp.net-core,Asp.net Mvc,Asp.net Core,您好,我正在Asp.net Core中创建我的第一个项目,我需要在登录到用户的上一页后重定向用户。例如,如果他将观看页面“关于”,那么他将要登录,登录后,我需要他重定向到“关于”页面。 这是我在控制器中的代码 // // GET: /Account/Login [HttpGet] [Route("/Account/Login")] [AllowAnonymous] public IActionResult Login(string returnUrl =

您好,我正在Asp.net Core中创建我的第一个项目,我需要在登录到用户的上一页后重定向用户。例如,如果他将观看页面“关于”,那么他将要登录,登录后,我需要他重定向到“关于”页面。 这是我在控制器中的代码

 //
    // 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();但问题是上一页是登录页。我尝试将此方法放入//Get Login,但不知道如何将字符串发送到//Post Login

    // 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);
        }
    }
//POST:/Account/Login
[HttpPost]
[路由(“/Account/Login”)]
[异名]
[ValidateAntiForgeryToken]
公共异步任务登录(LoginViewModel模型,字符串returnUrl=null)
{
尝试
{
//奈斯米比特普里拉森酒店
if(_signInManager.IsSignedIn(用户))
返回ErrorActionResult(“用户已签名”);
//string var=Request.Headers[“Referer”];
string var=Request.Headers[“Referer”].ToString();
ViewData[“ReturnUrl”]=ReturnUrl;
if(ModelState.IsValid)
{
set lockoutOnFailure:真
var result=wait _signInManager.PasswordSignInAsync(model.Email、model.Password、model.RememberMe、lockoutOnFailure:true);
if(result.successed)
{
返回重定向到本地(returnUrl);
}
如果(结果IsLockedOut)
{
_logger.LogWarning(2,“someString”);
AddModelError(“用户名”,“someString”);
返回视图(“锁定”);
}
其他的
{ 
_logger.LogWarning(2,“someString”);
AddModelError(string.Empty,“无效密码或邮件”);
}
返回视图(模型);
}
//如果我们走到这一步,有些东西失败了,重新显示形式
返回视图(模型);
}
捕获(例外e)
{
返回ExceptionActionResult(e);
}
}

如果你还需要什么,或者你不明白我的意思,请向我询问详情。我很乐意为您提供任何帮助。

您可以尝试下面的方法。假设About的操作链接如下所示

<a href="/Home/About">About</a>
请参见URL:

现在就重定向而言,下面是login.cshtml的代码。请注意,在发布表单时,我们是如何将
returnURl作为匿名对象发送的

@using (Html.BeginForm("Login", "Account", new { ReturnUrl = 
ViewBag.ReturnUrl }, FormMethod.Post)){
      @*LOGIN PAGE RAZOR LOGIC*@
}
登录后控制器操作

   [HttpPost]
   public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
   {
       return RedirectToLocal(returnUrl);
   }
[HttpPost]
公共异步任务登录(LoginView模型,字符串返回URL)
{
返回重定向到本地(returnUrl);
}
   [HttpPost]
   public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
   {
       return RedirectToLocal(returnUrl);
   }