我目前正在编写一个(服务器端)Blazor应用程序,其中包括默认的AzureAD身份验证。
这对于经过身份验证的用户很有效--在入口(_Host.cshtml
)文件上进行挑战,重定向,然后在经过身份验证后返回。
我需要有一对夫妇的网页 * 不 * 需要身份验证-我不希望用户受到挑战,并重定向到微软。
正确的方法是什么?我已经尝试了AllowAnonymousAttribute
,AllowAnonymousToPage
剃刀页面选项,似乎没有什么可以阻止挑战。
任何帮助将不胜感激!
下面是我的身份验证设置(ConfigureServices):
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
services.AddControllersWithViews(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
});
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddTelerikBlazor();
}
然后是Configure中的相应部分:
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
2条答案
按热度按时间xn1cxnb41#
我发现我必须做的是将以下内容添加到_Hosts。cshtml
一旦我这样做了,默认情况下,任何页面都不再需要此授权,然后我可以将其添加到我想要的页面中。
例如,如果您想保护计数器。剃刀页面只需要在顶部添加一个Authorize属性:
所以现在如果你试图访问计数器页面,你会得到一个未授权的消息。
如果要在用户未登录时删除计数器链接,请修改导航菜单。剃刀和周围的计数器链接与
<AuthorizeView> </AuthorizeView>
这样:理想情况下,我希望只是选择退出授权的索引页,并有其他一切默认安全,但我找不到一种方法来让它工作。如果我尝试将
@attribute [AllowAnonymous]
添加到索引中。她似乎忽略了它。gdrx4gfi2#
首先,您需要在所有页面上禁用身份验证。这可以通过在“程序”中注解回退策略来完成。cs”。
然后,在您的个人剃刀页面上,添加以下代码:
这将允许您保留应用中所有组件和功能的完整功能。
我不建议将以下内容添加到您的“_Host”。cshtml”文件,因为这会导致按钮和组件更长时间地正常工作/显示
希望这能帮上忙。我使用Blazor服务器与dotnet 6。