我希望能够限制web应用程序的未登录用户的CRUD访问权限。这意味着我需要在验证他们是否是当前登录的用户后设置连接字符串。
我的代码中有CRUD限制,但希望设置帐户权限,以确保用户无法访问他们不应该访问的表,或执行他们不应该执行的操作。
现在,我的连接字符串设置在我的Startup.cs
文件中:
services.AddDbContext<WorldContext>(options => options
.UseMySql(_config["ConnectionStrings:Database"]));
如何设置连接字符串,或者至少设置用户名&启动之外DB帐户的密码?在我验证用户已登录后的某个时间?
我使用的是ASP.Net Core
、Entity Framework Core
和Asp.NET Core Identity
。
我只想授予用户需要的必要权限。引用如下:https://msdn.microsoft.com/en-us/library/cc716760(v=vs.110).aspx
仅授予用户在数据源中所需的权限数据源管理员应仅授予必要的权限用户。即使实体SQL不支持修改数据,如INSERT、UPDATE或DELETE,用户仍然可以访问到数据源的连接。恶意用户可能会使用此以的本机语言执行DML语句的连接数据源。
有多种方法可以做到这一点,但我想这样做。
创建两个DbContext
,一个用于用户身份验证和读取用户数据库登录详细信息。第二个是用于过去对其余表执行CRUD操作的用户。
问题是我们如何注册这两个DbContext
,在哪里???
在这里Asp.net Core
依赖性注射将为我们做很多工作
我们可以在Startup.cs
中注册LoginDbContext
(就像示例项目一样),它将用于验证用户并获得DB
用户的登录详细信息。还需要注入IServiceCollection
来验证用户,这样我们就可以在创建连接字符串时注册CRUDDbContext
,同时使用从数据库中获得的用户详细信息。之后,我们可以在控制器或存储库类中注入CRUDDbContext
。