如何仅在当前 运行 Windows 会话上制作 Grapevine REST 服务器

How to make Grapevine REST Server only on current running Windows Session

I 运行 Grapevine REST 服务器(Grapevine 的当前实现依赖于 System.Net.HttpListener 公开的功能)在 Windows 会话的 C# 应用程序中(用户 A),例如 localhost:8888。

如果我让用户 A 会话与可执行文件 运行ning 保持打开状态并登录到新的用户 B 会话,我会在本地主机访问我的 REST 服务器:8888。

我们能否在启动它的会话上限制对 REST 服务器的访问?

Grapevine 使用.NET 中内置的HttpListener,您可以直接使用RestServer 属性 RestServer class 的Advanced 属性 访问和配置。 ].

var server = new Grapevine.Server.RestServer();
var listener = server.Advanced; // This is an HttpListener object

如果您使用开箱即用的 HttpListener,您可以以任何方式配置身份验证。一个好的起点可能是 AuthenticationSchemes 属性.

如果传统的身份验证方法不适合您的用例,您可能想尝试在应用程序启动时获取登录用户,然后在 server.Router.BeforeRouting 上添加一个事件处理程序,该处理程序会自动 returns a 401 or 403 如果请求不是来自该用户。我自己并没有真正尝试过,但这就是我会去的地方。