Blazor WebAssembly是基于WebAssembly的新型技术,使得你可以在浏览器中以原生速度运行C#代码。本文将演示如何使用基于策略的授权来保护你的Blazor WebAssembly应用程序中的API。
首先,我们需要定义策略来定义如何授权用户。在这个例子中,我们将定义一个“有权访问Hello API”的策略:
public static class Policies
{
public const string CanAccessHelloApi = "CanAccessHelloApi";
public static AuthenticationBuilder AddPolicies(this AuthenticationBuilder builder)
{
builder.Services.AddSingleton();
builder.AddPolicy(CanAccessHelloApi, policy =>
{
policy.RequireAuthenticatedUser();
policy.AddRequirements(new CanAccessHelloApiRequirement());
});
return builder;
}
}
在这个定义中,我们使用了AddPolicy
来添加策略,然后使用RequireAuthenticatedUser
来要求用户进行身份验证。最后,我们使用AddRequirements
来要求用户满足特定的要求。
现在我们需要创建策略需要满足的要求。在这个例子中,我们需要用户具有“有权访问Hello API”的要求:
public class CanAccessHelloApiRequirement : IAuthorizationRequirement
{
}
这是一个非常简单的要求,因为我们不需要实际检查任何内容就可以满足它。如果用户没有这个要求,我们将向他们返回HTTP 403 Forbidden。
我们现在需要创建一个处理程序来检查用户是否满足策略要求。在这个例子中,我们将创建一个CanAccessHelloApiHandler
类来处理“有权访问Hello API”策略的要求:
public