在ASP.NET Web应用程序之外获取UserManager实例?

在零

我有一个带有ASP.NET标识(​​个人帐户)的ASP.NET MVC 5 Web应用程序。但是我需要能够从控制台应用程序注册新用户。

因此,我将一些ASP.NET Identity类从Web应用程序移到类库中,以在Web应用程序和CLI之间共享。

我已经成功移动了以下内容:

public class PortalDbContext : IdentityDbContext<PortalUser>
{
    public PortalDbContext(string connectionString)
        : base(connectionString, throwIfV1Schema: false)
    {
    }

    public static PortalDbContext Create(string connectionString)
    {
        return new PortalDbContext(connectionString);
    }
}

public class PortalUser : IdentityUser
{
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<PortalUser> manager)
    {
        // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);

        // Add custom user claims here
        return userIdentity;
    }
}

public class PortalUserManager : UserManager<PortalUser>
{
    public PortalUserManager(IUserStore<PortalUser> store) : base(store)
    {
    }

    public async Task<IdentityResult> RegisterUser(string email, string password)
    {
        PortalUser user = new PortalUser { UserName = email, Email = email };

        return await this.CreateAsync(user, password);
    }
}

但我不知道从哪里得到IUserStore<PortalUser>PortalUserManager,从需求。

在Web应用程序中,检索到HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>()了我显然不能在类库中使用的该管理器

在零

我已经结束了加入一个静态方法Create(string connectionString)PortalUserManager将创建UserStoreDbContext返回经理的新实例。

public class PortalDbContext : IdentityDbContext<PortalUser>
{
    public PortalDbContext(string connectionString)
        : base(connectionString, throwIfV1Schema: false)
    {
    }

    public static PortalDbContext Create(string connectionString)
    {
        return new PortalDbContext(connectionString);
    }
}

public class PortalUser : IdentityUser
{
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<PortalUser> manager)
    {
        // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);

        // Add custom user claims here
        return userIdentity;
    }
}

public class PortalUserManager : UserManager<PortalUser>
{
    public PortalUserManager(IUserStore<PortalUser> store) : base(store)
    {
    }

    public static PortalUserManager Create(string connectionString)
    {
        UserStore<PortalUser> userStore = new UserStore<PortalUser>(PortalDbContext.Create(connectionString));

        PortalUserManager manager = new PortalUserManager(userStore);

        // Configure validation logic for usernames
        manager.UserValidator = new UserValidator<PortalUser>(manager)
        {
            AllowOnlyAlphanumericUserNames = true,
            RequireUniqueEmail = true                
        };

        // Configure validation logic for passwords
        manager.PasswordValidator = new PasswordValidator
        {
            RequiredLength = 6,
            RequireNonLetterOrDigit = true,
            RequireDigit = true,
            RequireLowercase = true,
            RequireUppercase = true,
        };

        return manager;
    }

    public async Task<IdentityResult> RegisterUser(string email, string password)
    {
        PortalUser user = new PortalUser { UserName = email, Email = email };

        return await this.CreateAsync(user, password);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何获取 ASP .net web 应用程序的虚拟路径?

如何在 IDE 之外运行 ASP.NET Web 应用程序 (.NET Framework)?

如何在ASP .NET MVC 5 Web应用程序的Seed方法中通过UserManager创建ApplicationUser

ASP.NET Web应用程序(.NET Framework)与ASP.NET Core Web应用程序(.NET Framework)

ASP .Net Core Web 应用程序调用 Web API

如何使用 JavaScript 从 ASP.NET 核心 Web 应用程序获取 JSON 信息

如何在ASP.NET MVC中获取Web应用程序的基本URL?

如何从Asp.Net MVC Web应用程序中的FileStremResult对象获取文件?

从 GridView 获取值以在 asp.net Web 应用程序中进行编辑

使用ASP.Net获取应用程序URL

在asp.net vnext中获取应用程序路径

ASP.NET Web应用程序(.NET框架)中的asp.net核心SignalR配置

ASP.NET Web应用程序的内存中缓存

ASP到底如何。NET核心Web应用程序启动

ASP.NET MVC3 Web应用程序

ExecutedScalar()-ASP.NET Web应用程序

F#的ASP.NET空Web应用程序

从外部库登录ASP.NET Web应用程序

Web服务导致ASP.Net应用程序崩溃

多个ASP .Net Web应用程序的中央登录站点

从asp.net Web应用程序加密.dll

无法使 ASP.Net Web 窗体应用程序超时

开发ASP.NET WEB API服务应用程序

ASP.NET Core Web 应用程序集成 TcpSockets

ASP.NET Web 应用程序中 SmtpClient 的问题

如何在ASP.NET MVC 5.2.3应用程序中的其他位置获取IAppBuilder实例?

从 Web 应用程序下载文件的问题 - ASP.NET Web 窗体应用程序

在Page_Load方法中获取真正的当前类名-ASP.NET Web应用程序(.NET Framework)

从我的asp.net mvc Web应用程序调用asp.net控制台应用程序