我有一个引用 .NET Core 类库的 MVC 核心应用程序。所有的数据访问和业务逻辑都在类库中。如何从类库访问经过身份验证的用户?
过去使用 .NET Framework 您可以使用
string UserName = System.Web.HttpContext.Current.User.Identity.Name
从类库中的方法内部获取用户名。在 .NET Core 中,似乎HttpContext不再具有CurrentorUser属性。
这是一个简单的用例。假设我有一个数据实体和服务,它在将实体保存到数据库之前用日期和用户名“标记”实体。
这些将在外部类库中:
public interface IAuditable{
DateTime CreateDate{get;set;}
string UserName{get;set;}
}
public class MyEntity:IAuditable{
public int ID{get;set;}
public string Name{get;set;}
public string Information{get;set;}
}
public static class Auditor{
public static IAuditable Stamp(IAuditable model){
model.CreateDate=DateTime.UtcNow;
model.CreatedBy=System.Web.HttpContext.Current.User.Identity.Name;
return model;
}
}
public sealed class MyService:IDisposable{
MyDb db=new MyDb();
public async Task<int> Create(MyEntity model){
Auditor.Stamp(model);
db.MyEntities.Add(model);
return await db.SaveAsync();
}
public void Dispose(){
db.Dispose();
}
}
然后在我的 MVC 控制器中,我有一个调用服务的 post 操作:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(MyEntity model)
{
await service.Create(model);
return RedirectToAction("Index")
}
我想要一种方法来替换该行,Auditor.Stamp因为HttpContext.Current.NET Core 显然没有。
慕码人2483693
相关分类