小编IAm*_*rey的帖子

使用C#查找递归组成员资格(Active Directory)

我希望得到一个用户在Active Directory中成为其成员的所有组的列表,这两个组都明确列在memberOf属性列表中,也隐式通过嵌套组成员身份列出.例如,如果我检查UserA并且UserA是GroupA和GroupB的一部分,我还想列出GroupC,如果GroupB是GroupC的成员.

为了让您更深入地了解我的应用程序,我将在有限的基础上进行此操作.基本上,我偶尔会想要进行安全检查,以便列出这些额外的会员资格.我想区分这两者,但这应该不难.

我的问题是我没有找到一种有效的方法来使这个查询工作.Active Directory上的标准文本(此CodeProject文章)显示了一种基本上是递归查找的方法.这似乎非常低效.即使在我的小域中,用户也可能拥有30多个组成员资格.这意味着为一个用户调用30多个Active Directory.

我查看了以下LDAP代码,以便一次获取所有memberOf条目:

(memberOf:1.2.840.113556.1.4.1941:={0})
Run Code Online (Sandbox Code Playgroud)

其中{0}将是我的LDAP路径(例如:CN = UserA,OU = Users,DC = foo,DC = org).但是,它不会返回任何记录.这种方法的缺点,即使它起作用,也就是我不知道哪个组是明确的,哪个是隐含的.

这就是我到目前为止所拥有的.我想知道是否有比CodeProject文章更好的方法,如果有的话,如何实现(实际代码将是美好的).我使用的是.NET 4.0和C#.我的Active Directory处于Windows 2008功能级别(它还不是R2).

.net c# active-directory

31
推荐指数
2
解决办法
3万
查看次数

使用没有RequireJS的角度Dragula

我希望使用angular-dragula模块(https://github.com/bevacqua/angular-dragula)在我的Angular项目中实现Drag and Drop .但是,它似乎严重依赖于RequireJS.我没有使用Require一段时间,只有一两个示例应用程序.有没有一种简单的方法来解开这个模块的需求?

作者似乎认为它很简单(https://github.com/bevacqua/angular-dragula/issues/23)并且在没有真正解释的情况下也关闭了类似的问题.我查看了代码,但没有看到如何加载模块而没有将RequireJS添加到我的项目中(我不想这样做).我是否坚持使用不使用此模块或添加Require或是否有办法在没有要求的情况下使用此模块?

javascript requirejs angularjs dragula

13
推荐指数
1
解决办法
2637
查看次数

两个具有左连接的COUNTER正在被乘以

我正在尝试获取一个查询,该查询为我提供表Users中的UserNames,用户从表Job2User获取的Jobs数,以及用户从表Place2User中获取的Places数.

以下查询将两个计数列的值相乘.例如,如果对于用户1,作业计数应为2且位置计数应为4,则用户1行中的两列将显示"8".我不确定我做错了什么:

SELECT `UserName`, COUNT(`Job2User`.`UserID`), COUNT(`Place2User`.`UserID`) 
FROM `Users`
LEFT JOIN `Job2User` ON `Job2User`.`UserID`=`Users`.`UserID` 
LEFT JOIN `Place2User` ON `Place2User`.`UserID`=`Users`.`UserID` 
GROUP BY `UserName`;
Run Code Online (Sandbox Code Playgroud)

mysql sql join count left-join

9
推荐指数
1
解决办法
3632
查看次数

为什么这个非常简单的SQL查询在MS Access中失败?

我有一个问题,所有的权利都不应该失败,我不能为我的生活找出原因

INSERT INTO Grocery_Store_Prices(Store,Item,Brand,Price,Unit,Quantity,Note) 
VALUES("Kroger","Cheesy Poof","Cartman",0.51,"fart",15,"what is going on");
Run Code Online (Sandbox Code Playgroud)

当我尝试运行查询时,我收到"INSERT INTO语句中的语法错误",并突出显示"注释"字段.如果我省略Note字段及其值,查询工作正常.有什么东西真的很明显我不见了,还是有一个Jet SQL怪癖埋在这里?

它所采用的表是:Grocery_Store_Prices

  • ID - 自动编号主键
  • 商店 - 文字
  • 日期 - 日期/时间
  • 项目 - 文字
  • 品牌 - 文字
  • 价格 - 货币
  • 单位 - 文字
  • 数量 - 数量(双)
  • 注 - 文字.

sql ms-access jet jet-sql

5
推荐指数
1
解决办法
1316
查看次数

数据库部署实践

我已经为我的客户部署了大量软件.主要是Window Forms应用程序.这是我目前的做法.

  1. 手动将SQLExpress和SQL Management Studio安装到每台客户端PC.
  2. 然后使用ClickOne从服务器安装代码.
  3. 当代码发生变化时,我将使用ClickOne进行部署 - (此步骤无问题)
  4. 但是当数据库列发生更改时,我该怎么办?

我甚至尝试过编写数据库更新脚本.每次程序启动时,它将读取.sql更新文件并在数据库存在时运行它们.这解决了更新数据库列的问题,但是当我的客户抱怨数据错误时,它在我的DEBUGGING工作中没有帮助.那时,我必须亲自前往他们的网站查看.

我发现很难在客户端PC上安装数据库,因为它使我的调试工作非常困难.我正在考虑将我的客户端数据库移动到在线服务器上的主机.但那就是这些限制:

  1. 如果互联网出现故障怎么办?
  2. 如果我的客户没有互联网怎么办?

你能帮忙建议我吗?这是开发人员面临的常见问题吗?有什么常见的做法?Window Azure或SQL CE有帮助吗?

c# sql deployment

5
推荐指数
1
解决办法
629
查看次数

sql select with argument,可以为NULL

根据程序中的某个变量,有一个参数可以为NULL的select查询的最佳方法是什么?

我可以想到两个解决方案(伪代码):

bool valueIsNull;
int value;

query = "SELECT * FROM table WHERE field ";

if (valueIsNull)
{
  query += "IS NULL";
}
else
{
  query += "= ?";
}
statement st = sql.prepare(query);

if (!valueIsNull)
{
  st.bind(0, value);
}
Run Code Online (Sandbox Code Playgroud)

要么

bool valueIsNull;
int value;

query = "SELECT * FROM table WHERE field = ? OR (? IS NULL AND field IS NULL)";
statement st = sql.prepare(query);
if (valueIsNull)
{
  st.bindNull(0);
  st.bindNull(1);
}
else
{
  st.bind(0, value);
  st.bind(1, value);
} …
Run Code Online (Sandbox Code Playgroud)

sql postgresql

4
推荐指数
1
解决办法
1222
查看次数