在Asp.Net Identity中为自定义UserManager设置Owin

时间:2015-05-21 19:21:57

标签: asp.net-mvc asp.net-web-api neo4j owin asp.net-identity-2

我使用neo4j.AspNet.Identity对我的网站进行身份验证,我有以下类连接到名为GraphClientWrapperNeo4jUserManager的数据库。GraphClientWrapper上课是:

 using System;
using Neo4jClient;

/// <summary>A wrapper class to allow the GraphClient to be used within the OWIN framework (must implement <see cref="IDisposable"/>)</summary>
public class GraphClientWrapper : IDisposable
{
    public GraphClientWrapper(IGraphClient graphClient)
    {
        GraphClient = graphClient;
    }

    public IGraphClient GraphClient { get; set; }

    public void Dispose()
    {
    }
}

Neo4jUserStore类代码是

public class Neo4jUserManager : UserManager<ApplicationUser>
{
    public Neo4jUserManager(IUserStore<ApplicationUser> store)
        : base(store)
    {
    }

    public async Task SetLastLogin()
    {
        //            Store.FindByIdAsync()
    }

    public static Neo4jUserManager Create(IdentityFactoryOptions<Neo4jUserManager> options, IOwinContext context)
    {
        var graphClientWrapper = context.Get<GraphClientWrapper>();
        var manager = new Neo4jUserManager(new Neo4jUserStore<ApplicationUser>(graphClientWrapper.GraphClient));

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

        manager.PasswordValidator = new PasswordValidator
        {
            RequiredLength = 6,
            RequireNonLetterOrDigit = true,
            RequireDigit = true,
            RequireLowercase = true,
            RequireUppercase = true
        };

        // Configure user lockout defaults
        manager.UserLockoutEnabledByDefault = false;
        manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5);
        manager.MaxFailedAccessAttemptsBeforeLockout = 5;

        // Register two factor authentication providers. This application uses Phone and Emails as a step of receiving a code for verifying the user
        // You can write your own provider and plug it in here.
        //            manager.RegisterTwoFactorProvider("Phone Code", new PhoneNumberTokenProvider<Neo4jUser>
        //            {
        //                MessageFormat = "Your security code is {0}"
        //            });
        //            manager.RegisterTwoFactorProvider("Email Code", new EmailTokenProvider<Neo4jUser>
        //            {
        //                Subject = "Security Code",
        //                BodyFormat = "Your security code is {0}"
        //            });
        //            manager.EmailService = new EmailService();
        //            manager.SmsService = new SmsService();
        var dataProtectionProvider = options.DataProtectionProvider;
        if (dataProtectionProvider != null)
        {
            manager.UserTokenProvider =
                new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("ASP.NET Identity"));
        }
        return manager;
    }
}

但是为了连接到数据库,我应该遵循这些代码

var gc = new GraphClient(new Uri("http://localhost.:7474/db/data"));
gc.Connect();
var graphClientWrapper = new GraphClientWrapper(gc);
var manager = new Neo4jUserManager(new Neo4jUserStore<ApplicationUser>(graphClientWrapper.GraphClient));  

问题是我不知道如何设置owin来使用我的自定义UserManager。任何人都可以帮忙设置owin吗?

0 个答案:

没有答案