我需要在绑定我的服务时访问我的声明,但看起来Ninject绑定发生在HttpMessageHandlerAdapter设置Thread.CurrentPrincipal之前,所以当我绑定我的服务时我无法访问我的声明。我试过这个
kernel.Bind<IMyService>().ToMethod(x => GetMyService());
private static IMyService GetMyService()
{
var principal = Thread.CurrentPrincipal;
var userId = [GetUserIdFromPrincipalClaims]
return new MyService(userId);
}
但是声明列表是空的,如果我从任何可以获得userId的操作中访问Thread.CurrentPrincipal声明列表。如何在绑定时访问我的声明列表?
答案 0 :(得分:0)
由于身份声明是一个运行时值,我会说它不能(很容易)完成。但是,涉及装饰器模式和抽象工厂的一种方法可能如下所示:
page("/polymer/item", function() {
app.route = "itemform";
});
page("/polymer/item/:itemId", function(data) {
app.route = "itemform";
app.params = data.params;
});