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();