Использование @attribute [Authorize(Policy = "...")] вызывает ошибку IAuthenticationService в приложении Blazor Server.C#

Место общения программистов C#
Ответить
Anonymous
 Использование @attribute [Authorize(Policy = "...")] вызывает ошибку IAuthenticationService в приложении Blazor Server.

Сообщение Anonymous »

Я пытаюсь использовать авторизацию на основе политики в приложении Blazor Server с помощью атрибута Razor:

Код: Выделить всё

@attribute [Authorize(Policy = "PolicyName")]
После добавления app.UseAuthorization() и builder.Services.AddAuthorization(...) в Program.cs приложение завершается с ошибкой, когда я пытаюсь перейти к авторизованному URL-адресу во время выполнения со следующей ошибкой:

Код: Выделить всё

InvalidOperationException: Unable to find the required 'IAuthenticationService' service.
Please add all the required services by calling
'IServiceCollection.AddAuthentication' in the application startup code.
Я делюсь своим Program.cs и страницей Razor ниже.

Не хватает ли мне какой-либо необходимой конфигурации для использования @attribute [Authorize] на Blazor Server?

Код: Выделить всё

Program.cs

Код: Выделить всё

var builder = WebApplication.CreateBuilder( args );

// Add services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();

//builder.Services.AddAuthentication();
builder.Services.AddAuthorization( options =>
{
options.AddPolicy( "CanViewAdminDashboard", policy =>
policy.RequireRole( "Admin" ) );
} );

builder.Services.AddNavigationAuthorization();

var app = builder.Build();

// Configure the HTTP request pipeline.
if( !app.Environment.IsDevelopment() )
{
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.UseStatusCodePagesWithReExecute( "/not-found", createScopeForStatusCodePages: true );
app.UseHttpsRedirection();

app.UseStaticFiles();

app.UseRouting();
app.UseAuthorization();
app.UseAntiforgery();

app.MapRazorComponents()
.AddInteractiveServerRenderMode();

app.Run();

Код: Выделить всё

Secure.razor

Код: Выделить всё

@page "/secure"
@attribute [Authorize(Policy = "CanViewAdminDashboard")]

Secure Page
This page should be protected by PolicyName.
Как правильно настроить аутентификацию и авторизацию, чтобы @attribute [Authorize(Policy = "...")] работал в приложении Blazor Server, не вызывая этой ошибки?

Подробнее здесь: https://stackoverflow.com/questions/798 ... vice-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»