如果我使用活动目录作为用户存储,我如何将数据库中的信息与特定用户相关联?我应该在验证它们之后将它们插入数据库(这对我来说似乎是多余的),或者仅使用广告成员资格提供程序进行身份验证,我应该使用SQL成员资格提供程序吗?
答案 0 :(得分:3)
会员提供商仅关注身份验证。授权(与身份验证不同)由您的逻辑执行,可选择使用角色提供程序。
您可以将Active Directory用于角色,但是您需要使用外部实现,因为ASP.NET不包含一个开箱即用的(例如http://www.codeproject.com/Articles/28546/Active-Directory-Roles-Provider)。
如果您使用AD作为成员资格但想要跟踪数据库中的用户,那么您将需要使用AD用户的objectGUID
属性,因为它既是唯一的又是不可变的,其他属性如cn
objectSid
是唯一的,但不是一成不变的。
我个人不会在我工作的任何ASP.NET项目中使用Membership / Roles / Profiles功能,因为它们需要特殊处理,这会在您的应用程序中创建一个逻辑上独立的问题,并不总是与您的其他内容相关联。应用程序,特别是如果您为实体使用ORM。即使您实现自己的提供程序以避免应用程序的内部实体模型的复杂化,您仍然会遇到问题,因为Membership
对象为您的模型公开了一个新接口,您仍然需要在任何现有系统上实现你有用户管理。因此,我只建议为超级基本网站使用会员/角色/个人资料。