在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現在,你已經創建了一個基本的登錄頁面。用戶可以通過表單輸入用戶名和密碼,然后點擊 “登錄” 按鈕提交表單。如果身份驗證成功,用戶將被重定向到主頁。如果身份驗證失敗,將顯示錯誤消息。