Ale*_*lex 7 dependency-injection .net-core asp.net-core
我Startup.cs启用了 JWT 身份验证,它在我的应用程序中完美运行。
b.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, o =>
{
o.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = key,
ValidateIssuer = true,
ValidIssuer = JwtConstants.Issuer,
ValidateAudience = true,
ValidAudience = JwtConstants.Audience,
ValidateLifetime = true,
ClockSkew = TimeSpan.Zero
};
});
Run Code Online (Sandbox Code Playgroud)
在我的一个控制器中,我想获取配置TokenValidationParameters中设置的句柄Startup.cs。我认为我可以通过向控制器构造函数提供IOptions<JwtBearerOptions> options并读取来实现此options.Value.TokenValidationParameters目的,但是,当注入时,属性与 中设置的值不匹配Startup.cs。
我的最终目标是手动验证 JWT 令牌,如下所示。
var handler = new JwtSecurityTokenHandler();
var user = handler.ValidateToken(token, validationParameters, out var validatedToken);
Run Code Online (Sandbox Code Playgroud)
要获取在启动期间使用身份验证方案注册的选项,您必须使用 来IOptionsMonitor提取命名选项。
在你的控制器中,像这样注入
public YourController(IOptionsMonitor<JwtBearerOptions> jwtOptions, ...) { ... }
Run Code Online (Sandbox Code Playgroud)
然后,当您想要获取选项的实例时,您可以使用与注册身份验证方案相同的名称来获取它。就像你的情况一样:
var yourOptions = _jwtOptions.Get(JwtBearerDefaults.AuthenticationScheme);
Run Code Online (Sandbox Code Playgroud)
您可以在此处阅读有关 aspnet core 中的选项模式的更多信息:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options ?view=aspnetcore-2.2
| 归档时间: |
|
| 查看次数: |
1430 次 |
| 最近记录: |