我有本地主機託管的網站和WebAPI 2(ASP.NET MVC 5),但具有不同的端口。如何使用外部登錄從Web API 2獲取令牌
我試圖獲得令牌使用此javascript但根本沒有令牌,並且它使用包含用戶名和密碼的查詢字符串重定向到當前網站。
如何解決?
<form id="userData">
<input type="text" name="userName" placeholder="UserName" />
<input type="text" name="password" placeholder="Password" />
<input type="submit" id="login" value="Login" />
</form>
var login = function() {
var loginData= $("#userData").serialize();
loginData= loginData+ "&grant_type=password";
$.ajax({
type: 'POST',
url: 'http://localhost:57371/Token',
data: loginData
}).done(function (data) {
console.log(data);
// Cache the access token in session storage.
sessionStorage.setItem(tokenKey, data.access_token);
}).fail(showError);
return false;
};
$("#login").click(login);
var showError = function (XMLHttpRequest, textStatus, errorThrown) {
var responseText = JSON.parse(XMLHttpRequest.responseText)
console.log(responseText.Message + " Code: " + XMLHttpRequest.status);
$("#output").text(JSON.stringify(responseText, null, 4));
};
更新1.啓用Cors OK。
public static void Register(HttpConfiguration config)
{
EnableCrossSiteRequests(config);
}
private static void EnableCrossSiteRequests(HttpConfiguration config)
{
var cors = new EnableCorsAttribute(
origins: "*",
headers: "*",
methods: "*");
config.EnableCors(cors);
}
更新2.錯誤
服務器代碼是什麼樣的? –
@ Khnle-Kevin這是默認的ASP.NET WEB API 2項目,它已經實現了MS Identity 2.0並且測試成功。並且'EnableCorsAttribute'已正確啓用。 –
你確定jQuery已正確加載幷包含在你的HTML中嗎?看起來您所連接的點擊處理程序完全不起作用:'$(「#login」)。click(login);'並且表單只是重新加載當前頁面。 –