在ASP.NET Core MVC中,如果要在登录表单中使用身份验证的LoginModel进行数据绑定,可以按照以下步骤进行解决:
services.AddAuthentication();
[Authorize]
public class LoginModel : PageModel
{
// ...
}
asp-antiforgery标记,并在表单中添加asp-route-returnUrl隐藏字段,以便在登录后返回到原始请求的URL。例如:
[BindProperty]属性注解将returnUrl绑定到属性中,以便在POST请求中接收并使用它。例如:[BindProperty]
public string ReturnUrl { get; set; }
Url.IsLocalUrl方法来验证returnUrl是否为本地URL,并使用Redirect方法将用户重定向到原始请求的URL。例如:public IActionResult OnPost()
{
if (!ModelState.IsValid)
{
return Page();
}
// 其他验证逻辑
if (Url.IsLocalUrl(ReturnUrl))
{
return Redirect(ReturnUrl);
}
else
{
return RedirectToPage("/Index");
}
}
通过以上步骤,您应该能够在ASP.NET Core MVC中成功使用身份验证的LoginModel进行表单数据绑定和登录。