2017-01-10 11 views
-1

Кто-нибудь знает, как получить удаленный IP-адрес при реализации IResourceOwnerPasswordValidator IdentityServer4 с использованием C#?Получить IP-адрес при реализации IResourceOwnerPasswordValidator

***** Редактировать

Благодаря leastprivilege, который поставил меня на правильном пути я теперь получил следующее:

Моих UserValidationService [IResourceOwnerPasswordValidator] Класс имеет:

public UserValidationService(ISecurity SecurityRepo, IHttpContextAccessor HttpContext) 
{ 
     _securityRepo = SecurityRepo; 
     _httpContext = HttpContext; 
} 

и мой класс setup.cs имеет:

var identityServer = services.AddIdentityServer() 
           .AddSigningCredential(key) 
           .AddInMemoryPersistedGrants()         .AddInMemoryIdentityResources(Config.GetIdentityResources())         .AddInMemoryApiResources(Config.GetApiResources()) 
           .AddInMemoryClients(Config.GetClients()); 


identityServer.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); 
identityServer.Services.AddTransient<IProfileService, ProfileService>();    
       identityServer.Services.AddTransient<IResourceOwnerPasswordValidator>(x => new UserValidationService(bllFactory.GetInstance<ISecurity>())); 

Я получаю ERR или

Там не аргумент, учитывая, что соответствует требуемому формальному параметру «HttpContext» из 'UserValidationService.UserValidationService (ISecurity, IHttpContextAccessor)

Я понимаю, сообщение об ошибке, но примеры я вы видели онлайн, не отправляйте вручную в IHttpContextAccessor.

Благодаря

Давида

ответ

0

Вы можете впрыснуть IHttpContextAccessor в вашей реализации.

Оттуда вы получаете доступ к HttContext - и затем к запросу.