как получить ip клиента в asp core 3.1? - PullRequest
0 голосов
/ 11 июля 2020

Я получу IP-адрес клиента с _httpContextAccessor.HttpContext.Connection.RemoteIpAddress.ToString (), но я получил 127.0.0.1 или :: 1. мой веб-сервер nginx со следующей настройкой:

 location / {
        proxy_pass http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_set_header  X-Forwarded-For $remote_addr;
    }

мои коды: _httpContextAccessor.HttpContext.Connection.RemoteIpAddress.ToString();, который вернет 127.0.0.1 или :: 1, и я добавляю следующие коды в метод настройки:

    app.UseForwardedHeaders(new ForwardedHeadersOptions
    {
        ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
    });

1 Ответ

0 голосов
/ 11 июля 2020

Ваша конфигурация в порядке.

Вы запускаете приложение с локального компьютера? в таком случае 127.0.0.1 или ::1 подойдут. Поскольку 127.0.0.1 или ::1 - ваш IP-адрес.

Если вы развернули приложение на удаленном сервере, вы не увидите 127.0.0.1.

Обратите внимание, что вам необходимо используйте app.UseForwardedHeaders(...) перед промежуточным программным обеспечением, которое использует IP-адрес:

//...
// use it here
//...
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints();
...