Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication 如何在NancyFx中注册并从容器中获取IUserIdentity?_Authentication_Ioc Container_Nancy_Structuremap3 - Fatal编程技术网

Authentication 如何在NancyFx中注册并从容器中获取IUserIdentity?

Authentication 如何在NancyFx中注册并从容器中获取IUserIdentity?,authentication,ioc-container,nancy,structuremap3,Authentication,Ioc Container,Nancy,Structuremap3,我对NancyFx使用FluentValidation。我想根据当前上下文验证一些数据,完全针对当前用户。不幸的是,我找不到任何关于如何注册和从容器(我使用的是StructureMap)获取此类信息的示例 Docs“上下文应该在Nancy的大多数地方都可用,因此获取调用当前请求的用户的身份不应该是一个问题。”但是容器在默认情况下没有它 有链接、方向吗 我将非常感谢您的帮助。上下文与用户标识一样是请求范围,并被传递到RequestStartup方法中,您可以在引导程序中覆盖该方法。容器还被传递到R

我对NancyFx使用FluentValidation。我想根据当前上下文验证一些数据,完全针对当前用户。不幸的是,我找不到任何关于如何注册和从容器(我使用的是StructureMap)获取此类信息的示例

Docs“上下文应该在Nancy的大多数地方都可用,因此获取调用当前请求的用户的身份不应该是一个问题。”但是容器在默认情况下没有它

有链接、方向吗


我将非常感谢您的帮助。

上下文与用户标识一样是请求范围,并被传递到RequestStartup方法中,您可以在引导程序中覆盖该方法。容器还被传递到RequestStartup中,因此您可以注册每个请求所需的任何内容,并在构建您注册的对象时使用上下文。

大致如下:

为每个请求注册ICurrentContextProvider。iccurrentcontextprovider只能有一个IUserIdentity属性,不过我建议为set和get使用两个显式方法,这样可以防止双重初始化,等等

使您的IUserMapper(假设其请求范围也已确定)依赖于ICurrentContextProvider,并在映射后设置属性


在此之后,任何依赖ICurrentContextProvider的代码都可以访问您设置的属性。

没错。我找到了。但是没有任何关于身份的信息。Context.CurrentUser为null,因为稍后创建/映射。:(问题是:容器中注册的IContainer是否也根据请求确定了作用域(是否为子容器)?如果是,我可以在进行身份映射时(在IUserMapper中)将其拉入并注册我的身份服务。我认为IContainer是请求范围。请尝试:)@Jon我正在使用表单。将上下文传递到身份服务中如何?身份最终将根据上下文设置,对吗?可能在服务需要它之前,对吗?