在ASP.NET Core 2.1中,您可以使用中间件来确定用户的Claims,即使没有Authorize属性。
首先,您需要在Startup.cs文件的ConfigureServices方法中添加以下代码来启用身份验证和声明相关的服务:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "your-issuer",
ValidAudience = "your-audience",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your-secret-key"))
};
});
services.AddAuthorization();
然后,在Configure方法中添加以下代码来使用身份验证和声明中间件:
app.UseAuthentication();
最后,在需要验证声明的控制器或方法中,您可以使用HttpContext.User.Claims属性来访问用户的声明:
[HttpGet]
public IActionResult Get()
{
var claims = HttpContext.User.Claims;
// 对声明进行处理...
return Ok();
}
请注意,这种方法适用于通过JWT进行身份验证的情况。在上述示例中,您需要替换“your-issuer”,“your-audience”和“your-secret-key”为您自己的值。
希望这可以帮助到您!