如何在asp.net c#中处理数据库用户
Posted
技术标签:
【中文标题】如何在asp.net c#中处理数据库用户【英文标题】:How to handle database users in asp.net c# 【发布时间】:2017-03-07 03:33:49 【问题描述】:我在 asp.net 中创建一个网站。在我的应用程序中,我将用户分为两类。一个是普通用户,另一个是管理员用户。管理员用户可能是一个或最多两个用户。我决定为管理员用户而不是 SQL Server 中的表用户创建单独的两个数据库用户。所以我有三个数据库用户,两个用于管理员,一个用于普通用户
案例 1: 场景是,如果普通用户想登录。系统将连接到 SQL SERVER 中的普通数据库用户,并将查看用户表中的凭据。如果找到用户,则会话将生成,普通用户将重定向到欢迎页面。
案例 2: 对于管理员用户,我有直接的数据库用户。我没有在用户表中存储和查看管理员用户。管理员用户可以是动态的。我不想将数据库用户保存在 web.config 文件中的连接字符串中以供管理员使用。连接始终是运行时的,但问题是如何处理数据库用户凭据,因为我不想将数据库用户凭据存储在 cookie 和会话中。
假设如果 admin usr 1 通过登录页面登录。我的系统将检查数据库用户是否存在于 SQL SERVER 中。如果存在系统将重定向到欢迎页面,我希望我的整个应用程序记住 admin usr 1 已登录。
如何在 asp.net 中处理这种情况。
【问题讨论】:
【参考方案1】:我会考虑实施ASP.NET Identity,而不是滚动您自己的安全实施。使用久经考验的方法要好得多,而且最近刚刚在一个项目中实现了这一点,如果您阅读网络上的一些教程,它是相当简单的。
所有用户都应通过标准登录页面进行身份验证,无论其权限如何。一旦通过身份验证,您应该通过他们的Roles
控制他们对您的应用程序的访问,您可以根据用户是“普通”用户还是“管理员”用户来创建和分配。
您提到管理员用户拥有不同的 SQL 帐户来连接到数据库,我会质疑这是否有必要,因为您应该能够通过应用于每个用户的安全性来控制每个用户可以执行的操作登录到您的 ASP.NET 应用程序。
【讨论】:
这也是为了数据库的安全。因为普通用户权限有限,管理员权限最大。 @user3671390 一旦通过身份验证 - 如果需要,您可以为每种类型的用户使用不同的连接字符串 - 只需在 web.config 中有两个连接字符串,并根据用户级别使用每个连接字符串已登录。 但问题是在连接字符串中我必须存储我不想要的数据库用户信息。我希望我的管理员用户始终是独立的。 @user3671390 你所说的独立是什么意思 - 你的意思是每个管理员都有一个唯一的 SQL 帐户?【参考方案2】:我建议您不要为您的角色使用不同的数据库,因为它会弄乱业务逻辑。而是使用用户表创建一个数据库,然后创建一个通过 FK 连接的角色表。
【讨论】:
不,数据库将是一个,但用户会不同。 我的意思是一个数据库三个数据库用户以上是关于如何在asp.net c#中处理数据库用户的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C# 类(.cs 文件)和 ASP.NET .aspx 文件中使用相同的 OracleMembershipProvider?
如何在 C# 页面 ASP.NET Core MVC 上使用 SignInManager 和 Usermanager
如何在 C# asp.net 中管理 Facebook api 响应数据?