IdentityManager с VNext

Кто-нибудь пробовал использовать IdentityManager с vNext?

У меня проблемы с app.UseIdentityManager(IdentityManagerOptions) метод расширения.

Не существует

Поэтому я попытался использовать метод расширения, созданный для UseIdentityServer (находится здесь), изменив все аспекты, связанные с сервером, на менеджера. Когда я это делаю, я получаю System.NullReferenceException в строке 43.

Будем очень благодарны за любые советы о том, как использовать метод расширения.

2 ответа

Я использую ASPNET 5 beta6, и я получил это на работу.

Попробуйте использовать это обновление IApplicationBuilder расширение найдено в репозитории Samples на ветке dev. Переназначить метод для принятия IdentityManagerOptions вместо IdentityServerOptions и редактировать строитель UseIdentityManager

Вкратце вот как выглядит мой метод расширения

public static class IApplicationBuilderExtensions
{
    public static void UseIdentityManager(this IApplicationBuilder app, IdentityManagerOptions options)
    {
        app.UseOwin(addToPipeline =>
        {
            addToPipeline(next =>
            {
                var builder = new AppBuilder();

                var provider = app.ApplicationServices.GetService<IDataProtectionProvider>();

                builder.Properties["security.DataProtectionProvider"] =
                    new DataProtectionProviderDelegate(purposes =>
                    {
                        var dataProtection = provider.CreateProtector(string.Join(",", purposes));
                        return new DataProtectionTuple(dataProtection.Protect, dataProtection.Unprotect);
                    });

                builder.UseIdentityManager(options);

                var appFunc =
                    builder.Build(typeof (Func<IDictionary<string, object>, Task>)) as
                        Func<IDictionary<string, object>, Task>;
                return appFunc;
            });
        });
    }
}

Я использую vNext и заметил, что многое изменилось и будет меняться.

Для своих собственных нужд я смог довольно легко настроить и запустить идентификацию, и мне нужно было сделать два шага, чтобы он работал правильно. То, что я сделал, должно работать и на тебя.

В вашем StartUp.cs вам необходимо убедиться, что вы добавили следующее в метод ConfigureServices:

services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();

В дополнение к этому вам необходимо настроить приложение на использование идентификатора, а для этого вам необходимо сделать следующее в вашем методе Configure():

app.UseIdentity();
Другие вопросы по тегам