实现IResourceOwnerPasswordValidator时获取IP地址

时间:2017-01-10 14:57:10

标签: c# identityserver4

有没有人知道如何使用c#实现IdentityServer4的IResourceOwnerPasswordValidator时获取远程IP地址?

*****编辑

感谢至少让我走上正轨的最爱,我现在得到了以下内容:

我的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>()));

我收到错误

  

没有给出的参数对应于'UserValidationService.UserValidationService(ISecurity,IHttpContextAccessor)所需的形式参数'HttpContext'

我理解错误消息,但我在网上看到的示例并没有手动发送到IHttpContextAccessor。

由于

大卫

1 个答案:

答案 0 :(得分:1)

您可以将IHttpContextAccessor注入您的实施中。

从那里你可以访问HttContext - 然后访问请求。