使用Active Directory / Windows集成身份验证是一个给定的。从发展的角度来看,消费它的最佳方式是什么?
是通过配置吗?
<location path="SecurePage.aspx">
<system.web>
<authorization>
<allow roles="MyDomain\My Secure Users" />
<deny users="*" />
</authorization>
</system.web>
</location>
是通过code吗?
User.IsInRole(@"MyDomain\My Secure Users");
将它存储在数据库中是一个好主意吗?那么授予新用户/组可以通过自定义应用程序完成吗? (我问这是因为这是现状。)这个想法出了什么问题?
答案 0 :(得分:1)
没有理由你不能同时使用它们。完成web.config非常简单有效。但总是在角色级别操作。您可以将代码版本用于您使用配置不足的场景,以及当您想要显示/隐藏UI的特定部分时(还有控件版本)。
更新1:您已经拥有对角色的支持,因此我假设数据库实际上是将角色映射到功能。 Asp.net内置支持和它支持的可扩展性点在角色级别。如果您确实需要完全动态化,那么您需要在代码级别进行检查(.config对角色进行操作)。这需要额外的努力,因此更多地取决于系统的大小。对于大多数情况来说,坚持角色就足够了。
答案 1 :(得分:1)
我个人更喜欢声明式方法(即基于位置的web.config方法)。这使得在必要时更容易进行更改,而无需重新部署代码。
在任何情况下,我都不建议像在示例中那样使用静态字符串调用User.IsInRole();如果您的身份验证没有更改,请使用web.config声明方法。
你在上一段中建议的路线是完全没问题的,但我只推荐你的auth信息可能经常更改的情况,即CMS应用程序或类似的。
简而言之,我认为这个主题没有“最佳实践”;这真的取决于应用程序。
答案 2 :(得分:0)
如果不会有太大变化,请使用web.config。
如果要改变很多,那么使用代码方法,但使用数据库使其易于修改。
更多关于编码实践的一般答案,而不是与安全性相关。