我有一个ASP.NET核心应用程序,它使用Entity Framework Core在SQL数据库上运行。但是,作为发送http请求的用户(当前通过IIS使用Windows身份验证),我希望以应用程序池用户身份登录SQL。这是否得到实体框架的支持?
services.AddDbContext<Data.MyDbContext>(o =>
o.UseSqlServer(Configuration.GetConnectionString("MyConnectionString")));
我的连接字符串是“Server = MYSERVER; Database = MyDatabase; Trusted_Connection = True;”
答案 0 :(得分:1)
看起来EF并不支持此功能。来自用户@divega:https://github.com/aspnet/Home/issues/1805
EF是否有其他方法来控制身份验证过程?或其他建议授权个人用户访问数据库?
不,EF Core(以及以前的版本)对此问题不可知,即它假定底层数据库连接将能够访问数据库。&#34;
此处还解释,只要使用Windows Auth,就可以根据需要使用WindowsIdentity.RunImpersonated()
完成此操作,但操作中的所有代码必须是同步的(直到.NET Core添加RunImpersonated的异步版本)。
public void SaveChangesAsUser(WindowsIdentity identity)
{
WindowsIdentity.RunImpersonated(identity.AccessToken, this.SaveChanges);
}