我正在编写一个基于Web的应用程序,需要将API公开给Windows窗体客户端。我正在使用ASP.Net WebAPI v2,因为我无法使用SSL(对于小规模项目而言太贵了),我偶然发现了HawkNet,这看起来是保护我的客户端和服务器之间通信的最佳选择(我都控制了)。
然而,有一件事让我对服务器端的HawkNet配置感到困惑:网站和博客上显示的所有示例都在WebApiConfig寄存器方法中显示硬编码处理程序,如下所示:
var handler = new HawkMessageHandler(new HttpControllerDispatcher(config),
(id) =>
{
return Task.FromResult(new HawkCredential
{
Id = "dh37fgj492je",
Key = "werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn",
Algorithm = "sha256",
User = "steve"
});
}, 60, true);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
constraints: null,
defaults: new { id = RouteParameter.Optional },
handler: handler
);
但是,在我的场景中,Windows Forms客户端将由不同用户在不同的笔记本电脑上使用,并且每个用户都需要能够从此WinForms应用程序“登录”才能使用Web API。如果我理解正确,我需要为每个用户维护一个“key”和“id”(可以在数据库中的服务器上执行),并且客户端也必须知道这个键(我猜关键可能是某些东西)比如哈希用户名和密码组合,所以它可以在客户端和服务器上构建,而无需在线路上传递它。)
但是如何在服务器上配置?换句话说,如何在服务器上的HawkMessageHandler中创建这些值(用户名,密钥和ID)?
或者我完全忽略了这一点?
感谢您的回复。
答案 0 :(得分:0)
看起来我找到了它。
可以使用(id)参数将其传递给另一个函数,然后可以使用此id在数据库中查找它,并返回一个hawkcredential对象