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和用户名称。