Active Directory身份验证&自定义角色

时间:2011-06-30 05:36:18

标签: asp.net asp.net-membership

我之前没有在ActiveDirectory成员资格提供程序上工作过,我对使用AD成员资格提供程序创建应用程序表示怀疑。如果我需要外部引用不同表中的用户(比如说自定义角色表),那么我应该使用哪个主要标识符(外键)来标识表中包含Role和用户关系的用户。

此外,有关用户的附加信息(AD详细信息除外)的位置存储在用户名,部门,当前项目等中。

是否经常拍摄Active目录的快照并将其存储在数据库中的表中,然后在sql连接中使用?

2 个答案:

答案 0 :(得分:1)

基本成员资格提供程序(以及派生的提供程序,如ActiveDirectoryMembershipProvider)使用UserName作为功能键(查询成员期望UserName作为键查询参数并返回单个MembershipUser对象)。这些查询返回具有基本成员资格信息的MemberShipUser对象 - 包括角色,电子邮件,评论等。如果要将ADMembership Provider与额外信息组合在一起,最好使用UserName作为密钥来执行此操作。如果使用数据库,则存储额外数据会更容易,因为.UpdateUser仅提交Email,Comment和IsApproved属性。

不,不拍摄快照,但如果您愿意,可以启用缓存。提供者在需要信息时直接查询AD。

答案 1 :(得分:0)

创建时的aspnet成员资格数据库位于App_Data文件夹中,非常方便,因为它非常支持所有的Login控件。 aspnet配置管理器可以很好地管理用户角色。配置文件属性由数据库本身管理。

可以在服务器连接中看到这样创建的数据库。如果分析数据库,您将看到每个用户除用户名外都有特定的userId。它们都是独一无二的。您无需复制其他表中的所有用户数据。您可以使用连接指定相关数据。用户登录后,您可以在代码中通过User.Identity.Name(c#)推荐他/她。

请使用Visual Studio中的服务器资源管理器查看数据库表,然后您可以查看表结构 - aspnet_Users, aspnet_Membership, aspnet_Profile等...