Identity.IsAuthenticated 在 ASP.Net Web API 中返回 false
Posted
技术标签:
【中文标题】Identity.IsAuthenticated 在 ASP.Net Web API 中返回 false【英文标题】:Identity.IsAuthenticated return false in an ASP.Net Web API 【发布时间】:2019-09-06 14:20:45 【问题描述】:登录成功后,返回值始终为false
。我正在使用Microsoft.Identity
(“个人用户帐户”选项)提供的默认身份验证系统,没有进行任何修改。有什么想法吗?
[HttpGet]
[Route("get-userId")]
public bool CurrentUserId()
return User.Identity.IsAuthenticated;
客户端代码:
登录.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');
);
);
);
陌陌.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);
);
【讨论】:
以上是关于Identity.IsAuthenticated 在 ASP.Net Web API 中返回 false的主要内容,如果未能解决你的问题,请参考以下文章
Identity.IsAuthenticated 在 ASP.Net Web API 中返回 false
profile.User.Identity.IsAuthenticated 返回 false 没有人帮助我
使用 AuthenticationStateProvider 注销用户并使用 Blazor 将 User.Identity.IsAuthenticated 设置为 false
Jwt Bearer Authentication 中间件始终将 User.Identity.IsAuthenticated 设置为 false
ASP.NET 如何在应用程序请求模块中访问 User.Identity.IsAuthenticated?
如果在 User.Identity.IsAuthenticated 为 false 时提供两个条件,GetUser(string userName, bool isOnline) 是不是仍返回 nul