小编m.t*_*ett的帖子

Blazor 使用 Azure AD 身份验证允许匿名访问

我目前正在编写一个(服务器端)Blazor 应用程序,其中包含默认的 AzureAD 身份验证。

这对于经过身份验证的用户来说效果很好 - 挑战入口 ( _Host.cshtml) 文件,重定向,然后在经过身份验证后返回。

我需要有几个页面不需要身份验证 - 我不希望用户受到质询并重定向到 Microsoft。

这样做的正确方法是什么?我已经尝试过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();
}
Run Code Online (Sandbox Code Playgroud)

然后是配置中的相应部分:

app.UseAuthentication();
app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
    endpoints.MapBlazorHub();
    endpoints.MapFallbackToPage("/_Host");
});
Run Code Online (Sandbox Code Playgroud)

authentication azure azure-active-directory blazor blazor-server-side

7
推荐指数
1
解决办法
3711
查看次数

MVC3 ValidationAttribute validationContext.memberName为null

我找到了一半的解决方案,但我无法得到真正的答案.

我创建了一个继承自ValidationAttribute和IClientValidatable的验证属性.

一切似乎都运行正常,如果我在页面上放置验证摘要,则会显示错误.

但是我无法在与该属性相关的文本框旁边显示错误.

我想这是因为我需要将属性名称添加到验证结果中.

然而,这是失败的地方,因为我无法从validationContext获取成员名称.

有没有办法让这种情况发生?或者我错过了什么?

public class AdmissionDayCaseAttribute : ValidationAttribute, IClientValidatable
{
    private String DayCaseID;
    private String AdmissionDateID;
    private String DischargeDateID;

    public AdmissionDayCaseAttribute(String DayCaseID, String AdmissionDateID, String DischargeDateID)
    {
        this.DayCaseID = DayCaseID;
        this.AdmissionDateID = AdmissionDateID;
        this.DischargeDateID = DischargeDateID;
    }
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        object AdmissionDate = GetPropertyValue(validationContext.ObjectInstance, AdmissionDateID);
        object DischargeDate = GetPropertyValue(validationContext.ObjectInstance, DischargeDateID);
        object AdmissionType = validationContext.MemberName == null ? null : GetPropertyValue(validationContext.ObjectInstance, validationContext.MemberName);
        if (AdmissionDate != null && DischargeDate != null && AdmissionType …
Run Code Online (Sandbox Code Playgroud)

c# asp.net validation visual-studio asp.net-mvc-3

6
推荐指数
1
解决办法
5868
查看次数