【问题标题】:AllowAnonymous doesn't work as expected in Web APIAllowAnonymous 在 Web API 中无法按预期工作
【发布时间】:2021-07-22 17:15:33
【问题描述】:

ASP.NET CORE 3.1 服务器端 Blazor 应用程序中,我无法让 AllowAnonymous 为 post 类型的请求 Web API 工作。 get 请求没有任何问题。

连同其工作的解决方案,请告知我所需的安全性。也许我在试验中降低了安全性以使发布请求正常工作。

每个发布请求都会出现这 3 个日志:

Startup.cs

        public void ConfigureServices(IServiceCollection services)
    {
        ....
        services.AddIdentity<ApplicationUser, ApplicationRole>()
            .AddDefaultUI()
                  .AddEntityFrameworkStores<EpisodeContext>();

        services.AddMvc(options=> { 
            options.RespectBrowserAcceptHeader = true; })
                .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

        services.AddRazorPages();
        services.AddServerSideBlazor().AddCircuitOptions(option => { option.DetailedErrors = true; });
        services.AddScoped<AuthenticationStateProvider, RevalidatingIdentityAuthenticationStateProvider<ApplicationUser>>();
        services.AddHttpContextAccessor();
        services.AddAuthorization(config =>
        {
            config.FallbackPolicy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .Build();

            config.AddPolicy("RequireAdministratorRole",
                 policy => policy.RequireRole("admin"));
        });
    ...
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseDatabaseErrorPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
        }

        app.UseStaticFiles();

        app.UseRouting();

        app.UseCors(x => x
            .AllowAnyOrigin()
            .AllowAnyMethod()
            .AllowAnyHeader());

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


        app.UseEndpoints(endpoints =>
        {
          
            endpoints.MapControllers();
            endpoints.MapBlazorHub();
            endpoints.MapFallbackToPage("/_Host");
        });
    }

API 控制器:

[AllowAnonymous]
[Route("api/[controller]")]
[ApiController]
[Produces("application/json")]

public class DailyContentController : ControllerBase
{
     [HttpPost("likeepisode"), AllowAnonymous]
    public async Task<bool> LikeEpisode(string episodenumber)
    {
        bool result = await _CDService.LikeEpisode(episodenumber);
        return result;
    }
}

Plesk 主机设置:

Web 应用程序防火墙

【问题讨论】:

  • 300 错误表明这与安全无关。
  • 如果这是同一解决方案中的 blazor 托管应用程序,您可以在该方法上放置一个断点以查看它是否得到它。
  • @Qudus 在本地机器上它可以工作,只有当它托管在 Plesk 上时它才不能工作。

标签: c# asp.net-core blazor-server-side plesk


【解决方案1】:

我已经能够通过在托管设置中将首选域设置为无来停止意外重定向:

【讨论】:

    猜你喜欢
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2014-12-09
    相关资源
    最近更新 更多