在 NancyFx 上下文中获取 Windows 用户
Acquiring Windows user in NancyFx context
我的任务是创建一个 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 提供了它自己的包含此信息的上下文,此外,这将被注入到 Nancy 上下文中,无需额外费用!
你需要做的是安装 Nancy.Owin nuget 包,然后从 Owin "Startup" [=30] 调用扩展 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"];
或者,如果你不喜欢欧文,你可以这样做:
我的任务是创建一个 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 提供了它自己的包含此信息的上下文,此外,这将被注入到 Nancy 上下文中,无需额外费用!
你需要做的是安装 Nancy.Owin nuget 包,然后从 Owin "Startup" [=30] 调用扩展 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"];
或者,如果你不喜欢欧文,你可以这样做: