如何设置数据库连接字符串用户名&在Startup.cs之外的密码?

时间:2017-01-19 01:55:17

标签: c# entity-framework asp.net-core asp.net-identity

我希望能够限制Web应用程序的未登录用户的CRUD访问权限。这意味着我需要在验证它们是否是当前登录用户之后设置连接字符串。

我的代码中有CRUD限制,但希望将帐户权限放在适当的位置,以确保用户无法访问他们不应访问的表,或执行他们不应执行的操作。

现在我的连接字符串已在我的Startup.cs文件中设置:

services.AddDbContext<WorldContext>(options => options
    .UseMySql(_config["ConnectionStrings:Database"]));

如何设置连接字符串,或者至少设置用户名&amp;启动以外的数据库帐户的密码?在我验证用户已登录后的某个时间?

我正在使用ASP.Net CoreEntity Framework CoreAsp.NET Core Identity

我只想授予用户所需的必要权限。引自此处:https://msdn.microsoft.com/en-us/library/cc716760(v=vs.110).aspx

  

仅向用户授予数据源中的必要权限。数据源管理员应仅授予必要的权限   给用户。尽管Entity SQL不支持DML语句   修改数据,例如INSERT,UPDATE或DELETE,用户仍然可以访问   与数据源的连接。恶意用户可以使用此功能   连接以执行本地语言的DML语句   数据来源。

1 个答案:

答案 0 :(得分:0)

有多种方法可以做到这一点,但我想这样做。

创建两个DbContext用于用户身份验证和读取用户数据库登录详细信息。其次是那些曾经在其余表上进行CRUD操作的用户。

问题是我们如何注册这两个DbContext以及????

此处Asp.net Core依赖注射将为我们做很多工作。

我们可以在LoginDbContext中注册Startup.cs(作为示例项目),用于验证用户并获取DB个用户登录详细信息。还需要注入{{1我们验证用户的位置,因此我们可以在创建连接字符串时注册IServiceCollection,其中包含我们从数据库获取的用户详细信息。之后,我们可以在控制器或存储库类中注入CRUDDbContext