在ASP.NET Core MVC中进行身份验证登录可以通过使用ASP.NET Core Identity来实现。下面是一种解决方法,包含代码示例:
首先,确保你的项目已经正确配置了ASP.NET Core Identity。可以通过在Startup.cs文件的ConfigureServices方法中添加以下代码来配置:
services.AddIdentity()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
接下来,在Startup.cs文件的Configure方法中添加以下代码来启用身份验证:
app.UseAuthentication();
接下来,创建一个AccountController.cs文件,并添加以下代码:
public class AccountController : Controller
{
private readonly UserManager _userManager;
private readonly SignInManager _signInManager;
public AccountController(UserManager userManager, SignInManager signInManager)
{
_userManager = userManager;
_signInManager = signInManager;
}
[HttpGet]
public IActionResult Login()
{
return View();
}
[HttpPost]
public async Task Login(LoginViewModel model, string returnUrl = null)
{
returnUrl = returnUrl ?? Url.Content("~/");
if (ModelState.IsValid)
{
var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
if (result.Succeeded)
{
return LocalRedirect(returnUrl);
}
else
{
ModelState.AddModelError(string.Empty, "Invalid login attempt.");
return View(model);
}
}
return View(model);
}
[HttpPost]
public async Task Logout()
{
await _signInManager.SignOutAsync();
return RedirectToAction("Index", "Home");
}
}
在上面的代码中,我们创建了一个AccountController类,并注入了UserManager和SignInManager来处理用户相关的操作。Login方法用于显示登录表单的视图,Login方法的HttpPost版本用于处理实际的登录逻辑。Logout方法用于注销用户。
创建一个LoginViewModel.cs文件,并添加以下代码:
public class LoginViewModel
{
[Required]
[EmailAddress]
public string Email { get; set; }
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
}
上面的代码定义了用于登录的视图模型。
接下来,创建一个Login.cshtml文件,并添加以下代码:
@model LoginViewModel
Login
上述代码创建了一个用于登录的表单视图。
最后,在你的视图中使用以下代码来显示登录链接:
@Html.ActionLink("Login", "Login", "Account")
这样,你就完成了ASP.NET Core MVC身份验证登录的基本配置和实现。用户可以通过访问/login来打开登录表单进行登录,并通过访问/logout注销登录。