【发布时间】:2016-08-10 16:42:58
【问题描述】:
当我使用Individual User Accounts 身份验证创建一个 ASP.NET Core Web 项目时,我注意到 VS2015 创建了一个带有许多操作方法的AccountController。这些操作方法中的大多数都包含输入可选参数string returnUrl = null,在这些方法中我们有ViewData["ReturnUrl"] = returnUrl;,如下面的一个示例所示。
问题:
- 这个可选输入参数和这些操作方法中的
ViewData["ReturnUrl"] = returnUrl;语句有什么用? 2. 什么时候应该在action方法中使用这些,什么时候应该避免使用它们?
获取方法:
[HttpGet]
[AllowAnonymous]
public IActionResult Login(string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
return View();
}
发布方法:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
if (ModelState.IsValid)
{
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, set lockoutOnFailure: true
var result = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, lockoutOnFailure: false);
if (result.Succeeded)
{
_logger.LogInformation(1, "User logged in.");
return RedirectToLocal(returnUrl);
}
if (result.RequiresTwoFactor)
{
return RedirectToAction(nameof(SendCode), new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
}
if (result.IsLockedOut)
{
_logger.LogWarning(2, "User account locked out.");
return View("Lockout");
}
else
{
ModelState.AddModelError(string.Empty, "Invalid login attempt.");
return View(model);
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
【问题讨论】:
标签: c# visual-studio-2015 asp.net-core asp.net-core-mvc