在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"] = "登录"; }登录
- 创建登录模型: 在 “Models” 文件夹中,创建一个名为 “LoginViewModel.cs” 的新文件,并添加以下代码:
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; } } }
- 创建登录控制器: 在 “Controllers” 文件夹中,找到 “HomeController.cs” 文件并替换其内容,以创建一个处理登录请求的控制器方法。你可以使用以下代码作为示例:
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_userManager; private readonly SignInManager _signInManager; public HomeController(UserManager userManager, SignInManager signInManager) { _userManager = userManager; _signInManager = signInManager; } [HttpGet] public IActionResult Login() { return View(); } [HttpPost] [ValidateAntiForgeryToken] public async Task 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); } } }
- 配置身份验证: 在 “Startup.cs” 文件中,确保你已经配置了身份验证中间件。你需要在 “ConfigureServices” 方法中添加以下代码:
public void ConfigureServices(IServiceCollection services) { // ... services.AddIdentity() .AddEntityFrameworkStores () .AddDefaultTokenProviders(); // ... }
同时,在 “Configure” 方法中添加以下代码:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // ... app.UseAuthentication(); app.UseAuthorization(); // ... }
- 创建用户模型和数据库上下文:
在 “Models” 文件夹中,创建一个名为 “ApplicationUser.cs” 的新文件,继承自
IdentityUser
。在 “Data” 文件夹中,创建一个名为 “ApplicationDbContext.cs” 的新文件,继承自IdentityDbContext
。确保在 “Startup.cs” 文件中将 “ApplicationDbContext” 设置为 “DbContextOptions” 的依赖项。
现在,你已经创建了一个基本的登录页面。用户可以通过表单输入用户名和密码,然后点击 “登录” 按钮提交表单。如果身份验证成功,用户将被重定向到主页。如果身份验证失败,将显示错误消息。