在Identity 2.0中成功实现自定义UserManager <IUser>

Jon*_*lis 7 c# asp.net-web-api owin asp.net-identity asp.net-identity-2

我正在尝试导航黑洞,这是身份成员身份的自定义实现.我现在的目标只是让我的这一行ApiController正确检索我的UserManager:

public IHttpActionResult Index()
{
    var manager = HttpContext.Current.GetOwinContext().GetUserManager<UserManager<MyUser,int>>();
    //manager is null
}
Run Code Online (Sandbox Code Playgroud)

这是我的设置.在我Startup的配置中,我设置了WebApi并添加了我的OwinContext:

app.CreatePerOwinContext<UserManager<MyUser,int>>(Create);
Run Code Online (Sandbox Code Playgroud)

我的创建方法:

public static UserManager<User,int> Create(IdentityFactoryOptions<UserManager<MyUser,int>> options, IOwinContext context)
{
   return new UserManager<MyUser,int>(new UserStore(new DbContext()));
}
Run Code Online (Sandbox Code Playgroud)

其余的是我可以做的最基本的实现.

MYUSER:

public class MyUser : IUser<int>
{
    public int Id { get; set; }
    public string UserName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

MyUserStore:

 public class MyUserStore : IUserStore<MyUser,int>
 {
    private IdentityDbContext context;
    public MyUserStore(IdentityDbContext c)
    {
       context = c;
    }

    //Create,Delete, etc implementations
 }
Run Code Online (Sandbox Code Playgroud)

MyDbContext:

 public class MyDbContext : IdentityDbContext
 {
     public MyDbContext() : base("Conn")
     {

     }
 }
Run Code Online (Sandbox Code Playgroud)

这一切都是为了学习身份如何运作,我相信没有人真正知道.我希望能够最终完全自定义我的用户和角色,避免使用Microsoft的IdentityUser.

同样,我现在的问题是在我的控制器中,我null在尝试检索我的UserManager 时得到了.

非常感谢任何和所有的帮助.

Jon*_*lis 3

我有几个错误,但主要的一个是我的 Startup 类看起来像:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseWebApi(new WebApiConfig());

        app.CreatePerOwinContext(MyDbContext.Create);
        app.CreatePerOwinContext<MyUserManager>(MyUserManager.Create);
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,OWIN 管道会在触发 WebAPI 调用后插入我的依赖项。改变它们是我的主要问题。

此外,我终于在谷歌搜索中找到了这个很棒的指南。它几乎回答了我所得到的一切。我需要实现一个具体的类UserManager<MyUser,int>

我希望这能够帮助以后的人。