Так что все работает нормально. Я просто не уверен, что так и должно быть.Вот пример изменения адреса доставки для текущего зарегистрированного пользователя.
Это контроллер, который я сделал:
[Route("addShippingAdress")]
[HttpPut]
public void addAddress([FromBody] string newShippingAdress)
{
string userId = User.Identity.GetUserId();
db.Users.Find(userId).ShippingAdress = newShippingAdress;
db.SaveChanges();
}
Это запрос Ajax об изменении адреса доставки:
$.ajax({
url: 'addShippingAdress',
method: 'PUT',
contentType: 'application/json',
headers: {
'Authorization': 'Bearer '
+ sessionStorage.getItem("accessToken")
},
dataType: "text",
data: JSON.stringify("some new adress"),
success: function (data) {
},
error: function (data) {
}
});
и это запрос Ajax, который я использую для входа в систему:
$.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);
sessionStorage.setItem("userName", response.userName);
window.location.href = "Data.html";
},
error: function (data) {
console.log(data)
}
});
Чтобы быть более точным, в будущем, когда я захочу получить некоторые свойства вошедшего в систему пользователя или изменитьнекоторые из свойств вошедшего в систему пользователя, например адрес доставки в примере, который я вам дал, это то, как я это делаю?Нужно ли мне отправлять токен доступа с каждым Ajax-запросом следующим образом:
...
headers: {
'Authorization': 'Bearer '
+ sessionStorage.getItem("accessToken")
},
...
для каждого контроллера, который я хочу использовать для вошедшего в систему пользователя, а затем находить вошедшего в систему пользователя, например:
string userId = User.Identity.GetUserId();
var loggedInUser = db.Users.Find(userId);
loggedInUser... // some logic here
Это правильный способ сделать это?Если так, то где контроллер считывает маркер доступа, который я отправляю в заголовке запроса Ajax?Когда я отправляю адрес доставки в теле, контроллер может прочитать его с помощью атрибута [FromBody], например:
public void addAddress([FromBody] string newShippingAdress)
Но где он читает маркер доступа, который я отправляю в заголовке?Я новичок, поэтому наберитесь терпения и понимания.Хорошего дня!