【发布时间】:2018-01-17 08:47:02
【问题描述】:
早上好。我一直在寻找几个地方来解决这个问题。单击登录按钮时,会显示 ~/Home 的路径。设置这条路径的地方在哪里?可以指定路径吗?
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
//
// POST: /Account/Login
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
// 계정이 잠기는 로그인 실패로 간주되지 않습니다.
// 암호 오류 시 계정 잠금을 트리거하도록 설정하려면 shouldLockout: true로 변경하십시오.
var result = await SignInManager.PasswordSignInAsync(model.ID, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
return Redirect(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "잘못된 로그인 시도입니다.");
return View(model);
}
}
【问题讨论】:
-
显示您的登录视图
-
不清楚您的要求。当用户导航到您需要身份验证的页面时,他们会自动重定向到
Login,并且框架将returnUrl的值设置为上一页,以便用户在登录成功时重定向回该页面. -
如果登录成功,是否意味着返回上一页?
-
是的,这是默认行为。你想做什么?
-
好吧,
returnUrl是一个默认参数,用于在访问该页面需要身份验证时重定向到上一页(假设您使用的是默认提供程序)。您可以使用Request.IsAuthenticatedcheck 和RedirectToAction("actionname", "controllername", new { returnUrl = "url here" }),但这种方式不像默认行为那样可行。
标签: asp.net asp.net-mvc asp.net-mvc-5