【发布时间】:2018-11-28 22:45:33
【问题描述】:
各位程序员,您好,我正在创建一个带有身份验证的 API。在OnTokenValidated 函数中,我想让我的控制器实例将声明保存在API Base Controller 中。
上下文变量是 TokenValidatedContext 并具有 HttpContext 属性,但此 HttpContext 没有常用方法(我只会使用常用方法获取 RouteData)。
我知道有很多方法可以轻松地从任何控制器访问声明,但由于原因,我需要在 ApiBaseController 中使用它。我的代码在启动时是这样的:
options.JwtBearerEvents = new JwtBearerEvents
{
OnAuthenticationFailed = context =>
{
return jwtMiddleware.AuthenticationFailed(context);
}
,OnMessageReceived = context =>
{
return jwtMiddleware.MessageReceived(context);
},
OnTokenValidated = context =>
{
//var claims = context.Principal.Claims.ToList();
return jwtMiddleware.TokenValidated(context);
},
OnChallenge = context =>
{
return jwtMiddleware.Challenge(context);
}
};
也许我可以将声明保存在另一个回调函数中?我到处寻找类似的情况,但我还没有找到任何东西。 你对此有什么建议吗?帮助。 提前致谢。
【问题讨论】:
-
为什么要把
claims保存在Controller里面?它们通常保存在Principal对象中。 -
@Win 声明确实在主体中。我把这件事告诉了我的领导。我想我会延长任务,直到我的领导改变主意。我想我可以试一试。
标签: c# asp.net-core jwt