从TokenValidatedContext获取控制器实例(Net Core,JwtBearerMiddleware)

时间:2018-06-19 21:49:35

标签: c# asp.net-core jwt

您好,程序员们,我正在创建带有身份验证的API。在set.seed(160230) library("mvtnorm", lib.loc="~/R/win-library/3.4") sigma= matrix(c(1,0.8,0.8,1),2,2) mu <- c(0,0) #bivariate normal data sim=replicate(n=1000 , rmvnorm(10,mean=mu , sigma = sigma)) pval1=c() for(i in 1:1000) { pval1[i]=cor.test(sim[,1,i],sim[,2,i],method = c("pearson"))$p.value } #type1 error rate mean(pval1<0.05) #power mean(pval3>0.05) 函数上,我想获取我的控制器实例以将声明保存在 API基本控制器中。 上下文变量是一个OnTokenValidated,并具有一个TokenValidatedContext属性,但是此HttpContext没有常用的方法(我只是用它的常用方法来获取RouteData)。 我知道有很多方法可以轻松地从任何控制器访问声明,但是由于原因,我需要在ApiBaseController中使用它。我的代码在启动时如下所示:

HttpContext

也许我可以将声明保存在另一个回调函数中?我到处搜索类似的情况,但尚未发现任何东西。 您对此有什么建议吗?救命。 预先感谢。

1 个答案:

答案 0 :(得分:0)

就像@win在评论中说的那样,声明可以在Principal中使用。因此,您应该像普通人那样使用它。

另一方面,

必须将相同的声明保存在基本控制器上。所以我做了以下事情:

  • 添加了IHttpContextAccessor的单例实例。
  • 创建了一个模型,其中包含我要保存的索赔信息。
  • 我创建了一个方法,该方法调用单例上下文及其声明并返回包含信息的模型。
  • 在基本控制器中,如果模型的实例为null,则使用前面提到的方法对其进行分配。

我不建议您使用最后一个步骤,只需使用Princpal,但可以帮助目标相似的其他人。