gpt4 book ai didi

c# - 在 NancyFx 上下文中获取 Windows 用户

转载 作者:太空宇宙 更新时间:2023-11-03 19:53:57 25 4
gpt4 key购买 nike

我的任务是创建一个 Intranet Web 应用程序。它最终将由位于 NancyFx API 之上的 SPA 前端(可能是 Angular)组成。

坦率地说,我对使用 Windows 用户进行身份验证的经验绝对为零,并且由于通常不推荐(正确的),因此很难找到这方面的具体信息。

我想根据发送每个请求的用户授权用户。但是,我不知道如何从南希的每个请求上下文中访问用户信息。我已经看过了:

public class IndexModule : NancyModule
{
public IndexModule()
{
Get["/"] = parameters =>
{
var User = this.Context.CurrentUser;
return View["index"];
};
}
}

不幸的是,this.Context.CurrentUser 似乎从未被填充并且始终为 null

如何使用 Windows 用户填充每个请求上下文?

或者,我做错了吗?在南锡处理 Windows 用户的推荐方法是什么?我已经研究了两天多了,我很紧张地告诉我的老板我不知道如何处理这个相当重要的问题。

最佳答案

Nancy 提供了 NancyContext 类型来为您提供调用发生的上下文。

不幸的是,Nancy 不包含开箱即用的 windows 用户。事实上,Nancy 对 IUserPrincipal 类型一无所知,该类型通常用于表示 Windows 身份。

好消息是 Nancy 确实与 Owin 集成,并且 Owin 提供了它自己的包含此信息的上下文,此外,这将被注入(inject)到 Nancy 上下文中,无需额外费用!

要实现这一点,您需要做的是安装 Nancy.Owin nuget 包,然后从 Owin“启动”类调用扩展 IAppBuilder.UseNancy():

public class Startup
{
public void Configuration(IAppBuilder app)
{
// other owin config here...

// Register Nancy with Owin middleware...
app.UseNancy();
}
}

这将使您能够像这样从 NancyContext 访问 Owin 环境:

var owinEnv = context.GetOwinEnvironment(); // context = your NancyContext
var windowsUser = (IPrincipal) owinEnv["server.User"];

或者,如果您不喜欢 Owin,也可以这样做:https://stackoverflow.com/a/28976742/569662

关于c# - 在 NancyFx 上下文中获取 Windows 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35760334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com