Я смотрю на образцы документации, кодекзаз и все остальное, но я застрял. Документация состоит в том, чтобы аутентификация фронта в бэкэнд, где мне нравится использовать имя пользователя и пароль, 2FA, .... < /p>
Мой проект будет средней архитектурой микро службы, которая будет в настоящее время организован в .NET ASPIRE и с использованием .NET 8.0. /> Для Frontend я собираюсь с Blazor Web App или Blazor Server и WASM. Этот шаблон создает 2 сборки - клиент и сервер. Поскольку я хочу имена пользователей и пароли, я пошел с типом учетной записи «отдельные учетные записи», это дает мне все страницы, которые я хочу. Логика, которая уже находится в моем проекте API идентификатора Backend Identity Server, в основном ApplicationDbContext и миграции. В любом случае, я не могу запустить свой фронт, так как он дает мне ошибку впрыскивания зависимостей на пользовательском Mananager .
Я пытался добавить это даже жестко, что его никогда не было.
Код: Выделить всё
builder.Services.AddScoped();
builder.Services.AddScoped();
< /code>
Невозможно разрешить службу для типа 'microsoft.aspnetcore.identity.iuserstore1[Xyflux.Frontend.Data.ApplicationUser]' while attempting to activate 'Microsoft.AspNetCore.Identity.UserManager< /code> 1 [xyflux.frontend.data.applicationUser] '< /p>
< /blockquote>
system.aggregateException:' Некоторые службы не являются службами Способен быть построен (ошибка при проверке дескриптора службы 'Servicetype: microsoft.aspnetcore.identity.usermanager1[Xyflux.Frontend.Data.ApplicationUser] Lifetime: Scoped ImplementationType: Microsoft.AspNetCore.Identity.UserManagerКод: Выделить всё
1[Xyflux.Frontend.Data.ApplicationUser]' while attempting to activate 'Microsoft.AspNetCore.Identity.UserManagerКод: Выделить всё
1[Xyflux.Frontend.Data.ApplicationUser] Lifetime: Scoped ImplementationType: Microsoft.AspNetCore.Identity.SignInManagerКод: Выделить всё
1[Xyflux.Frontend.Data.ApplicationUser]' while attempting to activate 'Microsoft.AspNetCore.Identity.UserManagerКод: Выделить всё
1[Xyflux.Frontend.Data.ApplicationUser]' while attempting to activate 'Microsoft.AspNetCore.Identity.UserManagerи полный di
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.AspNetCore.Components.Authorization;
using Microsoft.AspNetCore.Identity;
using Xyflux.Frontend.Components;
using Xyflux.Frontend.Components.Account;
using Xyflux.Frontend.Data;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents()
.AddInteractiveWebAssemblyComponents();
builder.Services.AddCascadingAuthenticationState();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddBff();
builder.Services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
options.Cookie.Name = "BlazorApp.Cookie";
options.Cookie.HttpOnly = true;
options.SlidingExpiration = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
})
.AddOpenIdConnect("oidc", options =>
{
options.Authority = "https://localhost:5001";
options.ClientId = "blazor-client";
options.ClientSecret = "your_client_secret";
options.ResponseType = "code";
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("api1");
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.ForwardSignIn = "";
});
builder.Services.AddAuthorization(options =>
{
options.FallbackPolicy = options.DefaultPolicy;
});
builder.Services.AddSingleton();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseWebAssemblyDebugging();
app.UseMigrationsEndPoint();
}
else
{
app.UseExceptionHandler("/Error", createScopeForErrors: true);
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseAuthentication();
app.UseAuthorization();
app.UseStaticFiles();
app.UseAntiforgery();
app.MapRazorComponents()
.AddInteractiveServerRenderMode()
.AddInteractiveWebAssemblyRenderMode()
.AddAdditionalAssemblies(typeof(Xyflux.Frontend.Client._Imports).Assembly);
// Add additional endpoints required by the Identity /Account Razor components.
app.MapAdditionalIdentityEndpoints();
app.Run();
< /code>
Я также использую структуру duende.bff. ?
Подробнее здесь: https://stackoverflow.com/questions/794 ... tion-setup