【问题标题】:.Net app.UseAuthorization() blocks some error pages.Net app.UseAuthorization() 阻止一些错误页面
【发布时间】:2020-10-26 09:36:39
【问题描述】:

由于我使用 app.UseAuthorization() 进行自动身份验证,它还阻止了一些错误检查 api 和我自定义的 404 未找到页面。例如,当我尝试访问不是真实 URL 的 localhost/RouteNotExist 时,它应该返回一个 404 页面而不是将我重定向到 /Account/Login。有没有办法解决这个问题,或者我不应该使用 UseAuthorization()?

编辑:这是我的配置方法:

 public virtual void Configure(IApplicationBuilder app)
    {
        
        app.UseNewRelicLowerCasePath();           
        app.UseCustomExceptionHandler();       
        app.UseCustomStatusCodePagesWithReExecute();
        app.UseForwardedHeaders();
        app.UseWebOptimizer();
        app.UseStaticFiles();
        app.UseRouting();
        app.UseIdentityServer();
        app.UseCookiePolicy();
        app.UseAuthentication();
        app.UseSession();
        app.UseCustomSession();
        app.UseAuthorization();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages();
            endpoints.MapControllers();
        });
    }



public static IApplicationBuilder UseCustomExceptionHandler(this IApplicationBuilder app)
    {
        app.UseWhen(context => !IsApi(context),
            builder => { builder.UseExceptionHandler("/Home/Error"); });

        app.UseWhen(context => IsApi(context),
            builder => { builder.UseExceptionHandler("/api/error/500"); });

        return app;
    }

isApi() 方法返回一个布尔值,表示 url 是否以“/api”开头。

【问题讨论】:

  • 请添加您的Configure 方法。
  • 刚刚添加了我的配置方法。
  • UseCustomExceptionHandler
  • 谢谢,我做了,但还是不行。
  • 请加UseCustomExceptionHandler代码。

标签: .net asp.net-mvc identityserver4 razor-pages


【解决方案1】:

在您的公共控制器上添加[AllowAnonymous] 属性(错误和未找到)。您可以在类或方法级别使用此属性,以指示在处理这些请求时不应执行 netcore 身份验证。

更多关于这个MSDN link的授权属性信息

请注意,如果您在类级别使用 [AllowAnonymous],则该类内部方法上的任何 [Authorize] 都将不起作用,因为 [AllowAnonymous] 优先。

【讨论】:

  • 谢谢,但问题不仅仅发生在控制器中。
猜你喜欢
  • 2014-12-29
  • 2016-05-08
  • 2015-11-03
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 2014-12-05
相关资源
最近更新 更多