You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于ASP.NET Core Identity的IdentityServer4注册与登录问题咨询

问题排查与解决方案

嘿,我来帮你逐个解决这些IdentityServer4结合ASP.NET Core Identity起步阶段的常见坑:

1. 注册页面空白、无Register相关文件/路由

这个问题的核心是你没有生成ASP.NET Core Identity的UI脚手架文件。官方对应.NET Core 2.0的release分支不会自动包含这些UI页面,需要手动生成:

  • 打开命令行,切换到你的IdentityServer项目根目录,执行以下命令生成Identity UI:
    dotnet aspnet-codegenerator identity -dc ApplicationDbContext
    
    执行过程中会提示你选择要生成的页面,记得勾选Register相关选项。
  • 生成完成后,检查Startup.cs里的配置:确保在app.UseAuthentication();之后添加了Razor Pages的路由映射:
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapRazorPages();
        // 其他路由配置...
    });
    
    这样Register页面的路由就能正常访问了。

2. 执行dotnet ef后找不到数据库

这大概率是连接字符串配置不对或者命令执行路径有误:

  • 检查appsettings.json里的ConnectionStrings节点:
    • 如果用LocalDb,默认连接字符串应该是:
      "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=IdentityServer4Quickstart;Trusted_Connection=True;MultipleActiveResultSets=true"
      
    • 如果用SQL Express,改成:
      "DefaultConnection": "Server=.\\SQLEXPRESS;Database=IdentityServer4Quickstart;Trusted_Connection=True;MultipleActiveResultSets=true"
      
  • 确保你是在IdentityServer项目目录下执行dotnet ef migrations add InitialCreatedotnet ef database update命令,而不是MvcClient项目。
  • 打开SQL Server Management Studio,连接对应的数据库实例(LocalDb或SQL Express),刷新数据库列表,看看是否生成了目标数据库。如果没生成,检查命令执行时的输出日志,排查权限或实例不存在的问题。

3. alice/bob账号登录失败、日志显示无内存用户

这是正常现象!当你集成ASP.NET Core Identity之后,IdentityServer4默认会禁用内存测试用户,转而使用数据库中的用户:

  • 如果你只是想临时测试,可以手动启用内存用户:在Startup.cs的ConfigureServices方法中,找到AddIdentityServer()的配置,添加.AddTestUsers(TestUsers.Users),同时需要安装IdentityServer4.Test NuGet包。不过这个只适合测试,生产环境绝对不能用。
  • 正确的做法是:先解决第一个注册页面的问题,创建一个属于你自己的用户账号,然后用这个账号登录,而不是依赖alice/bob这些内存测试用户。

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

火山引擎 最新活动