gpt4 book ai didi

angular - 具有 Windows 身份验证的 .Net Core WebAPI CORS

转载 作者:太空狗 更新时间:2023-10-29 17:49:56 27 4
gpt4 key购买 nike

我有一个 .Net Core WebAPI 服务,我已经为其启用了 CORS(使用下面的代码),在项目的属性中我禁用了匿名身份验证并启用了 Windows 身份验证。 POST 和 PUT 端点在启用匿名身份验证的情况下工作,但在禁用时失败。我明白了

OPTIONS http://localhost:64113/api/ 401 (Unauthorized)

启用CORS的代码

        services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.WithOrigins("http://localhost:3000")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});

Angular 代码

    public XXX(data: any): Observable<Response> {
return this.http.put(this.baseUrl, data,
{ withCredentials: true });
}

有没有人有这方面的经验?

谢谢

最佳答案

我遇到了同样的问题。终于得到了对我有用的解决方案。所以你可以尝试遵循这种模式:

  1. 通过执行以下操作启用 CORS 中间件(您已经完成):

    services.AddCors(options ={
    ...
    //describe your options here
    ...
    });
  2. 为 IIS/IIS Express 启用 Windows 身份验证和匿名身份验证(取决于您使用的是什么)。

  3. 使用 forwardWindowsAuthToken="true" 标志将 web.config 添加到项目的根文件夹。在我的示例中,它看起来像这样:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
    <system.webServer>
    <handlers>
    <remove name="aspNetCore"/>
    <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true"/>
    </system.webServer>
    </configuration>
  4. [Authorize] 属性应用于您的 Controller /操作。就是这样。现在,您只需访问 User.Identity.Name 属性
  5. ,即可发送 POST 和 PUT 请求以及获取用户身份

关于angular - 具有 Windows 身份验证的 .Net Core WebAPI CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45418787/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com