在我的新项目中,应用程序SQL Server用户Id仅对数据库具有“执行”权限。
我计划将实体框架与WebAPI一起使用,并使用SQL Server端的存储过程将数据提供给我的AngularJS网站。 DBA不允许表访问,因此编写Linq是不可能的。
我使用下面的代码测试了一个基本查询(select *
),一切正常:
var Data = PreEmploymentEntity.Database.SqlQuery<PortalUser>("Exec Test").ToList();
return Ok(Data);
如果我继续这样做,有什么我应该考虑或与设计相关的风险吗?
我发现了这个链接 - Entity Framework only with stored procedures,但我不确定他们是否只有“执行”权限。
提前致谢!
答案 0 :(得分:2)
答案取决于它。如果满足下列条件之一,则用户可以使用存储过程访问数据库对象,而无需对其中的对象具有任何权限:
在这两种情况下都有另一个限制:
如果您应该使用DDL,则可以使用certificate
为您的sp签名最后一件事,使用证书签名,允许您通过程序执行所有操作,但这是授予权限的最困难方法。