温馨提示×

asp.net core mvc怎么做登录页面

小亿
265
2024-11-30 08:09:38
栏目: 编程语言

在ASP.NET Core MVC中创建一个登录页面,你需要遵循以下步骤:

  1. 创建一个新的MVC项目(如果你还没有一个): 打开Visual Studio,选择 “创建新项目”,然后搜索 “ASP.NET Core Web 应用程序”,选择一个适合你需求的模板(例如,“Web 应用程序”),然后点击 “创建”。

  2. 添加MVC控制器和视图: 在 “解决方案资源管理器” 中,右键单击 “Controllers” 文件夹,然后选择 “添加” -> "控制器…”。在弹出的窗口中,选择 “MVC 控制器 - 空”,然后点击 “添加”。在 “添加新的Scaffolded项目” 对话框中,确保选择了 “MVC 控制器 - 使用读/写操作” 和 “MVC 视图 - 使用 EF Core”,然后点击 “添加”。

  3. 创建登录视图: 在 “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>
  1. 创建登录模型: 在 “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; }
    }
}
  1. 创建登录控制器: 在 “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<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);
        }
    }
}
  1. 配置身份验证: 在 “Startup.cs” 文件中,确保你已经配置了身份验证中间件。你需要在 “ConfigureServices” 方法中添加以下代码:
public void ConfigureServices(IServiceCollection services)
{
    // ...

    services.AddIdentity<ApplicationUser, IdentityRole>()
        .AddEntityFrameworkStores<ApplicationDbContext>()
        .AddDefaultTokenProviders();

    // ...
}

同时,在 “Configure” 方法中添加以下代码:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // ...

    app.UseAuthentication();
    app.UseAuthorization();

    // ...
}
  1. 创建用户模型和数据库上下文: 在 “Models” 文件夹中,创建一个名为 “ApplicationUser.cs” 的新文件,继承自 IdentityUser。在 “Data” 文件夹中,创建一个名为 “ApplicationDbContext.cs” 的新文件,继承自 IdentityDbContext。确保在 “Startup.cs” 文件中将 “ApplicationDbContext” 设置为 “DbContextOptions” 的依赖项。

现在,你已经创建了一个基本的登录页面。用户可以通过表单输入用户名和密码,然后点击 “登录” 按钮提交表单。如果身份验证成功,用户将被重定向到主页。如果身份验证失败,将显示错误消息。

0