我正在使用JwtSecurityTokenHandler
在aspnet core Web api应用程序中颁发令牌:
JwtSecurityToken token = BuildJwtSecurityToken(...);
public string toks = new JwtSecurityTokenHandler().WriteToken(token);
每次请求和创建令牌时,都会实例化一个新的 JwtSecurityTokenHandler,我可以使用它的全局实例并将其用于每次令牌生成吗?
private JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();
private GenToken(JwtSecurityToken token) => handler.WriteToken(token);
这样使用有什么问题吗?
文档表示,JwtSecurityTokenHandler
的实例成员不能保证线程安全。
https://msdn.microsoft.com/en-us/library/system.identitymodel.tokens.jwtsecuritytokenhandler(v=vs.114(.aspx
我看到的大多数示例,例如 blog.wille-zone.de 上的这个示例,都为每个请求单独创建它。
我不会太聪明;即使它目前是线程安全的,这里没有人可以承诺Microsoft保持这种状态。
如果你确实想得到他们的承诺,你可以从 https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet 提出一个问题开始。他们可以将其写入规范/代码/文档中。