【问题标题】:Dotnet core 3.1 return 401 with status text OKdotnet core 3.1 返回 401 状态文本 OK
【发布时间】:2020-09-28 00:21:35
【问题描述】:

我无法弄清楚为什么我的 API 针对未经授权的调用返回 OK 状态消息。 这是我的启动配置方法

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseSwagger(options => options.RouteTemplate = _swaggerConfigurations.JsonRoute);
                app.UseSwaggerUI(options =>
                {
                    options.SwaggerEndpoint(_swaggerConfigurations.UiEndPoint, _swaggerConfigurations.Name);
                });
            }
            else
            {
                app.UseExceptionHandler(builder =>{
                    builder.Run(async context =>
                    {
                        context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                        var error = context.Features.Get<IExceptionHandlerFeature>();
                        if (error != null)
                        {
                            context.Response.AddApplicationError(error.Error.Message);
                            await context.Response.WriteAsync(error.Error.Message);
                        }
                    });
                });
            }

            app.UseCors(x => x.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
            app.UseHttpsRedirection();
            app.UseRouting();
            app.UseAuthentication();
            app.UseAuthorization();
            app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
        }

控制器动作方法:

[HttpPost(ApiRoutes.Auth.Login)]
        public async Task<IActionResult> Login(UserToLoginDto dto)
        {
            var loggedInResult = await _authService.Login(dto);
            if (loggedInResult == null)
                return Unauthorized();

            return Ok(loggedInResult);
        }

我正在使用 Angular 来调用此方法。 每次都返回这个。

请让我知道我在这里做错了什么。

【问题讨论】:

  • 这是获取令牌的请求吗?
  • @pc_coder 是的,此请求将在成功时返回令牌,在失败时将返回未经授权。
  • 你试过用邮递员来获取令牌吗?我不确定令牌请求是否包含 api 前缀。
  • @pc_coder 感谢您的时间和精力 :) 实际上我已经解决了这个问题。

标签: angular api .net-core http-error


【解决方案1】:

经过详细的代码审查,我发现我没有将 AddCors() 添加到我的服务中,但我直接在管道中使用它,我也在使用 UseHttpsRedirection 中间件。我的 Angular 应用程序在开发模式下运行,并且没有 SSL。 API 和客户端都在没有任何证书的情况下运行。 添加 AddCors() 并删除 UseHttpsRedirection 中间件后,收到正确的 HttpErrorResponse。

【讨论】:

  • 遇到同样的问题。介意分享你如何解决它。我注释掉 UseHttpsRedirection 并启用 CORS,但在文本正常的地方仍然得到 401。
  • @zAnthony 您的客户端应用程序怎么样?你检查过 SSL 吗?
  • ..我的角度在 HTTP 上运行,我正在调用在 HTTPS 上运行的 API。如果我要在 HTTP 中运行 API,那么我会得到 Unauthorized statusText。似乎这是一个 SSL 问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
  • 2020-04-23
  • 2017-01-26
  • 1970-01-01
  • 2021-03-06
  • 2020-05-05
  • 2020-12-03
相关资源
最近更新 更多