You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建与指定教程同版且带用户身份验证的ASP.NET Core MVC应用?

解决MvcMovie集成身份验证的迁移混乱与链接失效问题

我之前踩过一模一样的坑,给你整理了一套亲测有效的分步方案,完美解决初始选身份验证导致的迁移混乱,同时确保MvcMovie的功能正常运行:

1. 先搭建基础MvcMovie项目(无身份验证)

先严格按照教程步骤创建不带身份验证的MvcMovie项目,先把电影列表、详情、增删改查这些基础功能跑通,确保所有MvcMovie相关链接都能正常访问。这一步是为了避免身份验证框架一开始就干扰项目的基础结构。

2. 手动集成身份验证框架

等基础项目稳定后,再手动添加身份验证组件,步骤如下:

  • 安装依赖包:在终端或包管理器控制台执行:
    Install-Package Microsoft.AspNetCore.Identity.EntityFrameworkCore
    Install-Package Microsoft.AspNetCore.Identity.UI
    
  • 修改DbContext:让你的MvcMovieContext继承自IdentityDbContext<IdentityUser>(替换原来的DbContext),示例代码:
    public class MvcMovieContext : IdentityDbContext<IdentityUser>
    {
        public MvcMovieContext(DbContextOptions<MvcMovieContext> options)
            : base(options)
        {
        }
    
        public DbSet<Movie> Movie { get; set; }
    }
    
  • 配置服务与中间件:
    • 在Program.cs(或Startup.cs)的服务配置中添加:
      builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
          .AddEntityFrameworkStores<MvcMovieContext>();
      
    • 确保中间件顺序正确:app.UseAuthentication()必须放在app.UseAuthorization()之前,且在app.UseRouting()之后;最后添加app.MapRazorPages()(Identity依赖Razor Pages)。
  • 生成身份验证页面:在终端执行:
    dotnet aspnet-codegenerator identity -dc MvcMovieContext --files "Account.Register;Account.Login;Account.Logout"
    
    这会自动生成登录、注册等核心身份验证页面。

3. 彻底解决数据库迁移混乱

这一步是关键,避免初始身份验证导致的迁移冲突:

  • 清理旧迁移:删除项目中所有已有的迁移文件(通常在Migrations文件夹下),同时删除本地测试数据库。
  • 创建全新迁移:在包管理器控制台执行:
    Add-Migration InitialCreateWithIdentity
    
    这个迁移会同时包含MvcMovie的电影表和身份验证的用户、角色等表结构。
  • 应用迁移到数据库:执行:
    Update-Database
    
    这样就能得到一个干净的、同时包含两种业务数据的数据库。

4. 修复MvcMovie链接无响应问题

如果做完上述步骤后电影链接仍无法访问,检查以下几点:

  • 路由配置:确保默认控制器路由app.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}")已正确配置,且放在app.MapRazorPages()之前。
  • Tag Helper使用:视图中的链接要使用ASP.NET Core的Tag Helper,比如<a asp-controller="Movies" asp-action="Index">电影列表</a>,避免硬编码URL。
  • 缓存问题:清除浏览器缓存或使用无痕模式测试,避免旧缓存导致的链接失效。

额外建议

  • 测试时先注册一个用户并登录,验证身份验证流程和MvcMovie功能是否能协同工作。
  • 如果仍有迁移问题,可以尝试使用Update-Database -Migration 0回滚所有迁移,再重新执行新的迁移命令。

内容的提问来源于stack exchange,提问作者MRP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:35:42