bit*_*ift 6 c# asp.net-core blazor blazor-server-side
我正在尝试在服务器端 Blazor 应用程序中使用自定义身份验证处理程序。我的处理程序中有一个断点,但它没有被击中。少了什么东西?
public class ValidUserRequirement : IAuthorizationRequirement
{
public bool MustBeValid { get; }
public ValidUserRequirement(bool IsValid)
{
MustBeValid = IsValid;
}
}
Run Code Online (Sandbox Code Playgroud)
public static class Policies
{
public const string IsValidUser = "IsValidUser";
public static AuthorizationPolicy IsValidUserPolicy()
{
return new AuthorizationPolicyBuilder().RequireAuthenticatedUser()
.Build();
}
}
Run Code Online (Sandbox Code Playgroud)
public class MyAuthHandler : AuthorizationHandler<ValidUserRequirement>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ValidUserRequirement requirement)
{
// will do checks against Db here
return Task.CompletedTask;
}
}
Run Code Online (Sandbox Code Playgroud)
// Our services
services.AddAuthorization(config =>
{
config.AddPolicy("IsValidUser", policy => policy.AddRequirements(new ValidUserRequirement(true)));
});
services.AddSingleton<IAuthorizationHandler, MyAuthHandler>();
services.AddScoped<AuthenticationStateProvider, ServerAuthenticationStateProvider>();
Run Code Online (Sandbox Code Playgroud)
@attribute [Authorize(Policy = Policies.IsValidUser)]
Run Code Online (Sandbox Code Playgroud)
剃刀应用程序
<Router AppAssembly="@typeof(Program).Assembly">
<Found Context="routeData">
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
</Found>
<NotFound>
<LayoutView Layout="@typeof(MainLayout)">
<p>Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>
Run Code Online (Sandbox Code Playgroud)
[更新]
好的,我创建了一个新项目,服务器端 blazor,使用 Windows 身份验证并引入了相同的代码。我可以成功地在身份验证处理程序中命中断点,因此我正在处理的项目中出现了一些问题。
| 归档时间: |
|
| 查看次数: |
1258 次 |
| 最近记录: |