有没有人知道如何使用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。
由于
大卫
答案 0 :(得分:1)
您可以将IHttpContextAccessor
注入您的实施中。
从那里你可以访问HttContext - 然后访问请求。