在 httplisteners authenticationselectordelegate 中提供身份验证被拒绝的消息
Giving an authentication denied message in httplisteners authenticationselectordelegate
我目前正在使用 httplistener authenticationselector 委托来执行 windows 身份验证和 ip 检查,它的工作非常出色,因为它拒绝并允许它应该是的客户端。
但是,问题是当有人被拒绝时,他们会收到 403 http 响应,这似乎被大多数浏览器解释为空白屏幕。我想做的是发回一条消息,说类似 "access denied: your ip has been whitelisted" 的内容。
这可能吗?
下面是委托的一个片段(目前效果很好)。
AuthenticationSchemeSelector pIPChecker = pRequest =>
{
if (!pfunIPChecker(pRequest.RemoteEndPoint.Address))
{
LogHelper.writeToEventLog(
"WARNING, BANNED IP: " + pRequest.RemoteEndPoint.Address.MapToIPv4().ToString() + "attempted to login",
EventLogEntryType.Warning,
LogHelper.EventLogID.PermissionFailure);
return AuthenticationSchemes.None;
}
return AuthenticationSchemes.Anonymous;
}
正如 X39 指出的那样,执行此操作的唯一方法似乎是 而不是 使用 Authenticator 委托,而是像往常一样实际读取请求,然后发回一个403 与您想要的内容。
我目前正在使用 httplistener authenticationselector 委托来执行 windows 身份验证和 ip 检查,它的工作非常出色,因为它拒绝并允许它应该是的客户端。
但是,问题是当有人被拒绝时,他们会收到 403 http 响应,这似乎被大多数浏览器解释为空白屏幕。我想做的是发回一条消息,说类似 "access denied: your ip has been whitelisted" 的内容。
这可能吗?
下面是委托的一个片段(目前效果很好)。
AuthenticationSchemeSelector pIPChecker = pRequest =>
{
if (!pfunIPChecker(pRequest.RemoteEndPoint.Address))
{
LogHelper.writeToEventLog(
"WARNING, BANNED IP: " + pRequest.RemoteEndPoint.Address.MapToIPv4().ToString() + "attempted to login",
EventLogEntryType.Warning,
LogHelper.EventLogID.PermissionFailure);
return AuthenticationSchemes.None;
}
return AuthenticationSchemes.Anonymous;
}
正如 X39 指出的那样,执行此操作的唯一方法似乎是 而不是 使用 Authenticator 委托,而是像往常一样实际读取请求,然后发回一个403 与您想要的内容。