在ASP.NET Core MVC中创建一个登录页面,你需要遵循以下步骤:
创建一个新的MVC项目(如果你还没有一个): 打开Visual Studio,选择 “创建新项目”,然后搜索 “ASP.NET Core Web 应用程序”,选择一个适合你需求的模板(例如,“Web 应用程序”),然后点击 “创建”。
添加MVC控制器和视图: 在 “解决方案资源管理器” 中,右键单击 “Controllers” 文件夹,然后选择 “添加” -> "控制器…”。在弹出的窗口中,选择 “MVC 控制器 - 空”,然后点击 “添加”。在 “添加新的Scaffolded项目” 对话框中,确保选择了 “MVC 控制器 - 使用读/写操作” 和 “MVC 视图 - 使用 EF Core”,然后点击 “添加”。
创建登录视图: 在 “Views” -> “Home” 文件夹中,找到 “Index.cshtml” 文件并替换其内容,以创建一个登录表单。你可以使用以下代码作为示例:
@model YourNamespace.Models.LoginViewModel
@{
ViewData["Title"] = "登录";
}
<h2>登录</h2>
<form asp-action="Login">
<div>
<label asp-for="Username"></label>
<input asp-for="Username" />
</div>
<div>
<label asp-for="Password"></label>
<input asp-for="Password" type="password" />
</div>
<button type="submit">登录</button>
</form>
namespace YourNamespace.Models
{
public class LoginViewModel
{
[Required]
[Display(Name = "用户名")]
public string Username { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "密码")]
public string Password { get; set; }
}
}
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using YourNamespace.Models;
namespace YourNamespace.Controllers
{
public class HomeController : Controller
{
private readonly UserManager<ApplicationUser> _userManager;
private readonly SignInManager<ApplicationUser> _signInManager;
public HomeController(UserManager<ApplicationUser> userManager, SignInManager<ApplicationUser> signInManager)
{
_userManager = userManager;
_signInManager = signInManager;
}
[HttpGet]
public IActionResult Login()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Login(LoginViewModel model)
{
if (ModelState.IsValid)
{
var result = await _signInManager.PasswordSignInAsync(model.Username, model.Password, false, lockoutOnFailure: true);
if (result.Succeeded)
{
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError(string.Empty, "用户名或密码不正确。");
}
}
return View(model);
}
}
}
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
// ...
}
同时,在 “Configure” 方法中添加以下代码:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
app.UseAuthentication();
app.UseAuthorization();
// ...
}
IdentityUser。在 “Data” 文件夹中,创建一个名为 “ApplicationDbContext.cs” 的新文件,继承自 IdentityDbContext。确保在 “Startup.cs” 文件中将 “ApplicationDbContext” 设置为 “DbContextOptions现在,你已经创建了一个基本的登录页面。用户可以通过表单输入用户名和密码,然后点击 “登录” 按钮提交表单。如果身份验证成功,用户将被重定向到主页。如果身份验证失败,将显示错误消息。