这个问题可能是由于前端和后端使用的身份验证机制不同步造成的。建议先检查客户端和服务端的身份验证配置是否一致,包括认证Cookie名称、密钥等等。
另外,可以使用以下代码示例在ASP.NET Core 6中获取当前请求的用户身份信息:
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using System.Security.Claims;
[ApiController]
[Route("[controller]")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public class UserController : ControllerBase
{
private readonly ILogger _logger;
public UserController(ILogger logger)
{
_logger = logger;
}
[HttpGet("GetUserData")]
public IActionResult GetUserData()
{
var user = HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value;
if (user == null)
{
return BadRequest();
}
return Ok(user);
}
}
在ReactJS中发送请求时,需要在请求头中添加认证信息:
fetch('/user/GetUserData', {
headers: {
Authorization: `Bearer ${userToken}`
}
})
其中userToken
是认证授权后获取到的令牌。通过以上代码调取API,就可以获取到当前请求的用户身份信息。