ASP.Net Identity - 针对不同应用的中央用户数据库?

时间:2014-05-19 19:00:55

标签: c# asp.net asp.net-mvc asp.net-identity

我想创建一个中央登录数据库,来自可能不同的客户端的多个应用程序将使用它。使用ASP身份我已经建立了一个用户和角色数据库。

不同的应用程序有不同的角色,所以我需要一种方法来进一步分解它们。例如。用户可能是一个应用程序中的管理员,而不是另一个应用程序。

有没有办法使用ASP身份?理想情况下,我想控制某些用户可以访问的应用程序,并将这些应用程序链接到不同的角色。

如果这超出了ASP Identity的范围,我应该在ASP.NET C#MVC Web应用程序中使用什么。

2 个答案:

答案 0 :(得分:2)

用户可以属于多个角色,那么为什么不让您的成员资格提供者加载所有角色并迭代它们以检查它们是否属于该特定角色?您可以为每个应用程序(例如AppOneAdmin,AppTwoAdmin)创建角色(权限),并为每个用户分配一个角色(权限)。如果它默认不处理它,我会确保我实现了一个自定义成员资格提供程序并编写逻辑来自己检查角色。

答案 1 :(得分:0)

如果您想创建一个"中央登录数据库"这完全独立于您的客户,也许您只需要几个SQL数据库表。 (这将是初步工作,但将为您提供最大的灵活性)

<强> TABLE1

SYSTEM_ID    |     USER_ID     |   PWD        |   ROLE
-------------+-----------------+--------------+----------
somesys      |     4544345     | ENCRYPTEDPWD |   ROLENAME1
someothersys |     4544345     | ENCRYPTEDPWD |   ROLENAME2

<强> TABLE2

SYSTEM_ID    |     ROLE        |   PERMIT_TYPE
-------------+-----------------+----------------
somesys      |     ROLENAME1   |     READ

您将加入两个查询(为了便于阅读,在此处拆分):

  1. 对用户进行身份验证(从表1中选择&#39; ROLE&#39;其中USER_ID =&#39; 4544345&#39; AND PWD =&#39; ENCRYPTEDPWD&#39;)。

    JOIN

  2. 获取权限(选择SYSTEM_ID,PERMIT_TYPE,其中ROLE =&#39; ROLEs&#39;(来自第一个查询)