Asp.Net访问外部程序集中的声明标识
问题描述:
我正在实现一个Asp.Net WebApi应用程序,我在声明中存储了一些用户特定的值。Asp.Net访问外部程序集中的声明标识
我的项目由几个类库项目组成,它包含模型和控制器。
现在我试图访问除主项目(在类库)控制器之外的索赔。
//calling this from a class library
var identity = Thread.CurrentPrincipal.Identity; //No user information such as Id available
var claims = ClaimsPrincipal.Current.Claims; //Contains zero elements
这里的权利要求包含零个元素。但如果我把上面的代码放在主项目的控制器中,一切正常。
如何从外部装置访问声明?
答
经过一番调查,我从启动配置类中删除了SuppressDefaultHostAuthentication();
。 现在Thread.CurrentPrincipal.Identity
按预期工作。
这可能是一个更好的主意,只是*传递*身份,而不是依赖一些你无法控制的静态成员。使你的库可测试。 – poke
@poke我能够使用'Thread.CurrentPrincipal.Identity;'来访问标识对象但我无法看到它的用户信息。您能否以简单的例子提供答案? – Rahul
在您的Web API中,只需调用您的库,如下所示:'myCustomLibrary.DoSomething(currentPrincipal,otherArgument)' - 即将主体传递给您的方法。 – poke