这取决于框架。例如在 ASP.NET MVC 中,当框架检测到用户试图访问受保护的资源时,它会将用户重定向到登录页面,并将受保护的资源 URL 作为查询字符串参数。
成功验证后,它会获取查询字符串中的 URL 并将其重定向到那里。
编辑
在重定向之前检查重定向 URL 总是一个好主意。ASP.NET MVC 确保返回 URL 是本地 URL。这是它在 ASP.NET MVC 中的实现方式。
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (ModelState.IsValid)
{
// Validate the user password
if (await Secrets.Validate(model.UserName, model.Password))
{
string userId = await Logins.GetUserId(IdentityConfig.LocalLoginProvider, model.UserName);
await SignIn(userId, model.RememberMe);
return RedirectToLocal(returnUrl);
}
}
// If we got this far, something failed, redisplay form
ModelState.AddModelError(String.Empty, "The user name or password provided is incorrect.");
return View(model);
}
private ActionResult RedirectToLocal(string returnUrl)
{
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}