#javascript #c# #jquery #.net #asp.net-web-api
#javascript #c# #jquery #.net #asp.net-web-api
Вопрос:
После успешного входа в систему возвращаемое значение всегда false
равно . Я использую систему аутентификации по умолчанию, которая предоставляется Microsoft.Identity
(опция «Индивидуальные учетные записи пользователей») без каких-либо изменений. Есть мысли?
[HttpGet]
[Route("get-userId")]
public bool CurrentUserId()
{
return User.Identity.IsAuthenticated;
}
Коды на стороне клиента:
Login.html:
$(document).ready(function () {
$('#btnLogin').click(function () {
$.ajax({
url: '/token',
method: 'POST',
contentType: 'application/json',
data: {
username: $('#txtUsername').val(),
password: $('#txtPassword').val(),
grant_type: 'password'
},
success: function (response) {
sessionStorage.setItem("accessToken", response.access_token);
window.location.href = "Momo.html";
},
error: function (jqXHR) {
$('#divErrorText').text(jqXHR.responseText);
$('#divError').show('fade');
}
});
});
});
Momo.html:
$(document).ready(function () {
if (sessionStorage.getItem('accessToken') == null) {
window.location.href = "Login.html";
}
$.ajax({
url: '/api/Account/get-userId',
method: 'GET',
success: function (response) {
console.log(response);
}
});
console.log(response)
ВОЗВРАТ false
.
Ответ №1:
Вам нужно отправлять токен на сервер с каждым запросом. Добавьте следующее к вашему вызову Ajax:
headers: { "Authorization": 'Bearer ' token }
Вы можете переписать свой код следующим образом:
$(document).ready(function () {
var token = sessionStorage.getItem('accessToken');
if (token == null) {
window.location.href = "Login.html";
}
$.ajax({
url: '/api/Account/get-userId',
method: 'GET',
headers: { "Authorization": 'Bearer ' token },
success: function (response) {
console.log(response);
}
});