【发布时间】:2021-06-05 17:05:15
【问题描述】:
我在可能的 .net 核心 Web 应用程序中有多个层。所以他们两个是;
- App.WebApi
- 应用程序服务
服务需要检查用户的角色或名称声明。所以我想我可以通过App.Services层中的依赖注入来使用IHttpcontextAccessor接口。我正在使用扩展方法来获取用户声明,如下所示。
public static class ClaimsPrincipalExtensions
{
public static string GetUserEmail(this ClaimsPrincipal principal)
{
return principal.FindFirstValue(ClaimTypes.Email);
}
public static string GetUserId(this ClaimsPrincipal principal)
{
return principal.FindFirstValue(ClaimTypes.NameIdentifier);
}
}
服务层实现如下
public class ProductService: IProductService {
IHttpcontextAccessor context;
public ProductService(IHttpcontextAccessor context){
context = context;
}
....
....
public IEnumerable<Product> Get(){
var userRoles = context.HttpContext.User.GetUserEmail();
....
}
}
所以我在服务层使用IHttpcontextAccessor。但它是 web api 的一部分。这适合专业解决方案吗?或者有没有其他办法?
【问题讨论】:
标签: asp.net-core .net-core asp.net-core-webapi service-layer