问题描述
我正在尝试使用Windows身份验证作为概念证明来建立一个简单的Blazor项目,并且对Blazor的功能不了解,或者我误解了到目前为止所读的内容。
我已经使用Windows身份验证创建了Blazor服务器项目,并且我试图根据在Active Directory中分配给用户的用户组来限制内容。
我发现自己面临的问题是我对AuthorizeView
的理解使您可以根据角色和策略来限制访问。但是,应用首次加载AuthorizeView
时会显示正确的“授权”内容,但在应用重新渲染并显示“未授权”内容后不到一秒钟。
这是我开始的“政策”设置。
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddAuthorization(config =>
{
config.AddPolicy("IsDeveloper",policy => policy.RequireRole("UserGroup_DEVELOPERS"));
config.AddPolicy("IsDeveloperAdmin",policy => policy.RequireRole("UserGroup_DEVELOPERADMINS"));
});
services.AddSingleton<WeatherForecastService>();
}
public void Configure(IApplicationBuilder app,IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios,see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
}
@page "/"
<h1>Hello,world!</h1>
Welcome to your new app.
<SurveyPrompt Title="How is Blazor working for you?" />
<AuthorizeView Policy="IsDeveloperAdmin">
<Authorized>
<p>You can only see this if you are a developer admin!!!</p>
</Authorized>
<NotAuthorized>
<p>You are not a dev admin</p>
</NotAuthorized>
</AuthorizeView>
<AuthorizeView><p>Hello world</p></AuthorizeView>
<AuthorizeView Policy="IsDeveloper">
<Authorized>
<p>You can only see this if you are a developer!!!</p>
</Authorized>
<NotAuthorized>
<p>You are not a dev</p>
</NotAuthorized>
</AuthorizeView>
我浏览过Microsoft文档,因此,如果有人可以共享指向资源的链接,或者有帮助我理解的见解,我将不胜感激。
更新
这似乎是特定的计算机问题。上面的代码在另一台开发机器上工作。部署到IIS服务器时,它也可以工作。我已经将VS更新到最新版本,没有运气。
在Visual Studio(2019)Edge Chronium和Google Chrome中运行该应用程序时,两种浏览器均会在加载时执行授权,然后过一秒钟就会使授权失败。但是,在IE11中,该应用程序已按预期授权。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)