2017-07-31 98 views
3

我有一個.Net核心WebAPI服務,我已啓用CORS(與下面的代碼),在項目的屬性我已禁用匿名身份驗證並啓用Windows身份驗證。 POST和PUT端點使用匿名身份驗證,但禁用時失敗。我得到.Net核心WebAPI CORS與Windows身份驗證

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

代碼啓用CORS

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

角碼

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

有沒有人有這樣的經驗嗎?

謝謝

回答

2

我有同樣的問題。終於有了解決方案,爲我工作。通過這樣做

  1. 啓用CORS中間件(你已經做了):所以,你可以嘗試遵循這個模式

    services.AddCors(options ={ 
        ... 
        //describe your options here 
        ...  
    }); 
    
  2. 啓用Windows身份驗證&匿名身份驗證IIS/IIS快遞(取決於你使用的)。

  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]屬性爲你的控制器/行動。就是這樣。現在您可以發送POST & PUT請求以及通過訪問User.Identity.Name屬性獲取用戶身份
相關問題