【后端】.NET Core API框架搭建(5) --获取 JWT 中的用户信息

1. 配置 JWT 身份验证

        关于配置JWT认证可以看搭建(3)【后端】.NET Core API框架搭建(3) --JWT认证添加

2. 创建 ICurrentUser 接口和实现

        2.1. ICurrentUser接口

        代码附上:

namespace DemoAPI.IService
{
    public interface  ICurrentUser
    {
        string UserId { get; }
        string UserName { get; }
    }
}

        2.2. CurrentUserService实现

        代码附上:

using DemoAPI.IService;
using System.Security.Claims;

namespace DemoAPI.Service
{
    public class CurrentUserService :ICurrentUser
    {
        private readonly IHttpContextAccessor _httpContextAccessor;

        public CurrentUserService(IHttpContextAccessor httpContextAccessor)
        {
            _httpContextAccessor = httpContextAccessor;
        }

        public string UserId => _httpContextAccessor.HttpContext?.User?.FindFirst(ClaimTypes.NameIdentifier)?.Value;

        public string UserName => _httpContextAccessor.HttpContext?.User?.FindFirst(ClaimTypes.Name)?.Value;
    }
}

2.3.依赖注入到Program.cs

        代码附上:

// 添加 HttpContextAccessor 服务
builder.Services.AddHttpContextAccessor();

// 注册 ICurrentUser 服务
builder.Services.AddScoped<ICurrentUser, CurrentUserService>();

      3. 封装用户信息

        代码附上:

 private readonly ICurrentUser _IcurrentUser;

 /// <summary>
 /// 依赖注入
 /// </summary>
 /// <param name="iCurrentUser"></param>
  public UserService(ICurrentUser iCurrentUser)
  {
      _IcurrentUser = iCurrentUser;
  }


  /// <summary>
  /// 获取用户Id
  /// </summary>
  /// <returns></returns>
  public string GetUserId()
  { 
       return _IcurrentUser.UserId;
  }

  /// <summary>
  /// 获取用户姓名
  /// </summary>
  /// <returns></returns>
  public string GetUserName()
  {
       return _IcurrentUser.UserName;
  }

3.要点

        存入用户信息时不要存密码,推荐存用户ID和用户名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值