以下是一个使用ASP.NET Core API保护PDF文件端点的示例代码:
public void ConfigureServices(IServiceCollection services)
{
// 添加身份验证服务
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "your-issuer",
ValidAudience = "your-audience",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your-secret-key"))
};
});
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//...
// 使用身份验证中间件
app.UseAuthentication();
//...
}
[ApiController]
[Route("api/[controller]")]
public class FilesController : ControllerBase
{
[HttpGet("protected-pdf")]
[Authorize] // 添加此属性以要求身份验证
public IActionResult GetProtectedPdf()
{
// 检查用户是否已进行身份验证
if (!User.Identity.IsAuthenticated)
{
return Unauthorized();
}
// 从某个位置获取PDF文件
byte[] fileBytes = System.IO.File.ReadAllBytes("path-to-your-protected-pdf");
// 返回文件
return File(fileBytes, "application/pdf");
}
}
GET /api/files/protected-pdf
Authorization: Bearer your-jwt-token
请注意,上述示例是基于JWT身份验证的,您需要替换"your-issuer"、"your-audience"和"your-secret-key"为实际的值。另外,您还需要调整文件路径以适应您的实际情况。