您好我正在Asp.net Core中创建我的第一个项目,我需要在登录到他的上一页后重定向用户。例如,如果他将观看页面“关于”,那么他将要登录,登录后我需要他重定向到“关于”页面。 这是我在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();但问题是上一页是登录页面。我尝试将此方法放入// 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);
}
}
如果您需要其他任何内容或如果您不理解我,请向我询问详细信息。我会很高兴得到任何帮助。
答案 0 :(得分:0)
您可以尝试以下内容。假设About的Action链接如下所示
<a href="/Home/About">About</a>
现在,当用户点击“关于”页面时,他将被重定向到下面的“登录页面”,因为它是一个GET请求,该URL将成为About page
的链接,它将被捕获到{ {1}}
string returnUrl
请参阅网址
现在就重定向而言,下面是login.cshtml的代码。请注意我们在表单发布时如何发送 public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
。
returnURl as Anonymous Object
登录POST控制器操作
@using (Html.BeginForm("Login", "Account", new { ReturnUrl =
ViewBag.ReturnUrl }, FormMethod.Post)){
@*LOGIN PAGE RAZOR LOGIC*@
}