我正在asp.net中建立一个网站。在我的应用程序中,我将用户分为两类。一个是普通用户,另一个是管理员用户。管理员用户可能是一个或最多两个用户。我决定为管理员用户而不是SQL服务器中的表用户创建单独的两个数据库用户。所以我有三个数据库用户,两个用于管理员,一个用于普通用户
案例1: 场景是如果普通用户想要登录的话。系统将连接到SQL SERVER中的普通数据库用户,并将查看users表中的凭据。如果它找到了用户,则会生成会话,普通用户将重定向到欢迎页面。
案例2: 对于管理员用户,我有直接数据库用户。我不是在用户表中存储和查找管理员用户。管理员用户可以是动态的。我不想将数据库用户保存在web.config文件中的连接字符串中。连接始终是运行时,但问题是如何处理数据库用户凭据,因为我不想在cookie和会话中存储数据库用户凭据。
假设admin usr 1通过登录页面登录。我的系统将检查SQL SERVER中是否存在该数据库用户。如果存在系统将重定向到欢迎页面,我希望我的整个应用程序记住admin usr 1已登录。
如何在asp.net中处理这种情况。
答案 0 :(得分:1)
我会考虑实现ASP.NET Identity而不是滚动自己的安全实现。更好地使用经过试验和测试的方法,并且最近刚刚在项目中实现了这一点,如果您阅读网络上的一些教程,那么它是相当简单的。
所有用户都应通过标准登录页面进行身份验证,无论其权限如何。一旦通过身份验证,您应该通过Roles
控制他们对您的应用程序的访问权限,您可以根据用户是否是"正常"来创建和分配您的应用程序。用户或" admin"用户。
你提到管理员用户有一个不同的SQL帐户可以连接到数据库,我会怀疑这是否有必要,因为你应该能够控制每个用户可以通过应用于每个用户的安全性执行的操作登录到您的ASP.NET应用程序。
答案 1 :(得分:0)
我建议不要为您的角色使用不同的数据库,因为它可能会破坏业务逻辑。而是使用用户表创建一个数据库,然后使用通过FK连接的角色表。