Сервер будет развернут как веб-сервис, клиентом будет приложение для Android.
Контракт содержащий прото-файлы для сервера/клиента.
Пока базовая связь с каналом и клиентом работает нормально.
В настоящее время мне нужно реализовать особый вид обработки сеанса, потому что службе необходимо взаимодействовать с API, у которого есть соединение и объект соединения.
Теперь начинается мое замешательство или, может быть, просто недопонимание.
У меня есть служба входа в систему, которая создает соединение API с заданными учетными данными, а также создает объект UserSession, которым я хочу управлять на стороне сервера, чтобы проверять каждый последующий запрос из этого канала/сеанса.
Я хотел использовать авторизацию AspNetCore по умолчанию и создать свой собственный AuthenticationStateProvider.
Попытка сопоставить поставщика при запуске завершается сообщением «Невозможно найти необходимые службы». Добавьте все необходимые службы, вызвав «IServiceCollection.AddAuthorization» в коде запуска приложения.
Вызов с учетом «AddAuthorization» приводит к ошибке «Невозможно разрешить службу для типа «Microsoft.AspNetCore.Authentication.IAuthenticationSchemeProvider», в то время как пытаюсь активировать «Microsoft.AspNetCore.Authentication.AuthenticationMiddleware».
Так что я немного запутался в том, как добиться авторизации, то есть проверить текущие доступные сеансы, если они есть. это любой сеанс, который соответствует идентификатору сеанса/токена метаданных запроса, без необходимости реализовывать его специально/вручную для каждого метода.
Запуск сервера в настоящее время выглядит следующим образом:
Код: Выделить всё
using GrpcTesting.Services;
using GrpcTesting.Services.Live;
using Microsoft.AspNetCore.Components.Authorization;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddGrpc(options =>
{
options.EnableDetailedErrors = true; // theoretisch sollte dass dafür sorgen, das wir die konkrete Exception bekommen
});
builder.Services.AddScoped();
//builder.Services.();
//builder.Services.add
//builder.Services.AddAuthorization();
WebApplication app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
app.UseRouting();
// Configure the HTTP request pipeline.
app.UseGrpcWeb(new GrpcWebOptions() { DefaultEnabled = true });
app.MapGrpcService().EnableGrpcWeb();
app.MapGet("/", ()
=> "Communication with gRPC endpoints must be made through a gRPC client. To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909");
app.Run();
Любая помощь или предложения будут приветствоваться.
Подробнее здесь: https://stackoverflow.com/questions/789 ... r-problems
Мобильная версия