最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

c# - Denying access to users on an ASP.NET Core Web API endpoint - Stack Overflow

programmeradmin1浏览0评论

I have an endpoint in my API like: api/users/{:userId}/...

I only want the user with userId to have access to his own endpoint and not to the endpoints of any other user.

I implemented a JWT Bearer token, which is used for authorization. I get the id from it and check if it matches the route the user wants to access:

[HttpGet("{userId:int}"), Authorize]
public async Task<ActionResult> GetUserById([FromRoute] int userId)
{
    var id = int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier));

    if (id != userId)
    {
        return BadRequest("Access denied.");
    }
    
    var user = await unitOfWork.UserRepository.GetUserByIdAsync(userId);
    
    if (user == null)  
        return NotFound("User not found");

    return Ok(user);
}

Now, I don't think this is the correct approach. The token can easily be tampered with and the id changed. How else could I do this?

发布评论

评论列表(0)

  1. 暂无评论