【问题标题】:How to create an admin user with .NET Core 3 Authentication [duplicate]如何使用 .NET Core 3 身份验证创建管理员用户 [重复]
【发布时间】:2020-10-20 04:09:19
【问题描述】:

我的项目是使用 Code-First EF(通过迁移类管理的数据库)作为 .NET Core Web API 项目开始的。我的端点工作正常,但现在需要身份验证。

我已经按照instructions here 搭建了身份。我确保使用现有的数据库上下文搭建脚手架,然后运行迁移代码。 Identity 所需的表是在我的 SQL 本地数据库上创建的。

我的下一步是使用 .NET API 创建一个默认管理员用户。从我在网上找到的几个来源看来,我可以通过 UserManager(和 RoleManager)类创建用户,如下所示:

userManager.CreateAsync(user, ADMIN_PASSWORD).Result;

但是,我想在 Startup.cs 配置函数中调用此类代码。 userManager 和 roleManager 如何。

使用这行配置应用程序时似乎实现了依赖注入: app.UseAuthorization();

在配置类中。这就是将类注入控制器动作的方式吗?正确的?但首先,我需要创建一个默认管理员。

我不希望用户注册。我只想让管理员使用这个应用程序。

如何注入用户管理器?

真的,我只想创建一个默认管理员,所以如果这样做是错误的,那很好,但是我在哪里以及如何做呢?

我不知道这是否会有所不同,但其目的是将 JWT 令牌与 Angular 应用程序一起使用。

【问题讨论】:

    标签: c# authentication .net-core


    【解决方案1】:

    不确定我是否理解正确。但是创建管理员用户(或任何用户)将是一次性的过程。所以我不认为创建用户代码会在 startup.cs 中。您可能必须为经理用户开发其他视图。或者您可以简单地使用 SQL 脚本创建用户。

    至于获取已配置服务的实例,可以在Configure方法中注入IServiceProvider,然后获取所需服务的实例

    public void Configure IServiceProvider sp)
    {
            var um =  sp.GetRequiredService<IUserManager>();
    
    }
    

    【讨论】:

    • 是的,这是一次性的,但我打算添加一个条件,仅在管理员不存在时才添加它。我不知道这样做的另一种方法(即直接在数据库中),因为创建用户的方式特定于.Net 使用的代码。除了GetRequiredSeruce,还有什么方法可以注入这个对象吗?
    • 如果你不能使用 Sql 脚本来做,那么你可能需要创建不同的应用程序,它有 UI(如 MVC)并以这种方式管理用户。
    猜你喜欢
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多