0
在登录每个用户时,都会为CompanyId指定一个Claim。我可以没有问题在WebApiController中达到这个声明。但是如果我试图在控制器方法之外触及它,那么HttpContext.Current将变为null。Httpcontext.current在控制器外部为空
我该如何在控制器之外达到我的要求,或者我应该使用什么解决方案来处理我的身份识别?
public class ProductsController : ApiController
{
private readonly ProductRepository _productRepo = new ProductRepository();
private readonly string companyId = MiniHelper.GetCompanyId();
[Route("ProductList")]
[EnableQuery()]
public IQueryable<Product> GetProductList()
{
return _productRepo.GetProducts().AsQueryable().Where(u => u.UserId == companyId);
}
}
public static class MiniHelper
{
public static string GetCompanyId()
{
var identity = (ClaimsIdentity)HttpContext.Current.User.Identity;
if (identity == null)
return string.Empty;
return identity.Claims.Where(a => a.Type == "CompanyId").Select(v => v.Value).FirstOrDefault();
}
}