【发布时间】:2018-05-13 22:26:46
【问题描述】:
根据标题的描述,我创建了一个派生自ClaimsPrincipal 的类并具有其他属性:
public class CustomeUser: ClaimsPrincipal
{
// additional properties
}
编写了一个中间件并为其赋值:
public async Task Invoke(HttpContext context)
{
// context to read header and assign to custome properties
context.User = new CustomeUser() {
ClientIP = /*reading from claims*/,
UserId = /*reading from claims*/};
}
并在配置服务中添加以下行以获取 HttpContext 以从启动类中的控制器获取该自定义用户属性。
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
从控制器获取客户用户属性
public BaseController(IHttpContextAccessor httpContextAccessor)
{
customeUser = httpContextAccessor.HttpContext.User as CustomeUser;
}
这是正确的方法吗?
【问题讨论】:
标签: asp.net-core asp.net-core-2.0 asp.net-core-webapi