嗨有效我創建了個人帳戶一個MVC SPA的應用程序啓用併成功能夠獲得訪問令牌註冊過程後的accessToken不跨域API
我也創造了個人賬戶WEB API項目啓用。並在本地主機上託管MVC和API項目。
我試圖從保存在我的會話存儲承載令牌的MVC應用程序訪問API。只要兩個項目都在localhost中,它就可以正常工作。我在Azure中託管了API項目,並且如果我嘗試使用Web應用程序創建的不記名令牌從本地主機MVC應用程序訪問它,API調用將始終返回「未授權」。
示例代碼:
MVC應用:
$.ajax({
url: 'https://azureapi/api/getProducts',
headers: {
'Authorization': 'Bearer ' + accesstoken,
'Content-Type': 'application/json; charset=utf-8'
},
type: "POST", /* or type:"GET" or type:"PUT" */
dataType: "json",
data: JSON.stringify(model),
success: function (result) {
},
error: function (e) {
debugger;
console.log(e.responseText);
}
});
API項目:
[Authorize]
[Route("getProducts")]
[HttpPost]
public HttpResponseMessage GetProducts(ProductCriteria model)
{}
在WEB API 啓用CORS
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
var enableCORS = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(enableCORS);
是因爲CORS(預檢OPTIONS請求未通過)或拒絕請求他們是否拒絕了您的應用程序後端代碼(例如訪問令牌驗證)? –
我沒有線索。如果我嘗試在fiddler中運行請求,即使我在Auth頭文件中傳遞了有效的不記名令牌,我也會得到「未授權」,如果我在本地主機中同時託管了MVC和API解決方案,那麼相同的持票人令牌就可以工作。我是否需要在API的web.config中添加任何設置? – DevExpress
您可能需要確保兩個站點共享相同的machineKey。 –