使用adldap-laravel和Laravel 5.8。
我正在获得基于LDAP组的权限。我可以使用以下命令检查用户是否属于组:$user->ldap->inGroup('Accounts');
(返回布尔值)
但是,该方法也接受array
,但似乎是“ AND”搜索,而不是“ ANY”。
所以我写了这个:
/**
* LDAP helper, to see if the user is in an AD group.
* Iterate through and break when a match is found.
*
* @param mixed $input
* @return bool
*/
public function isInGroup($input)
{
if (is_string($input)) {
$input[] = $input;
}
foreach ($input as $group)
if ($this->ldap->inGroup($group)) {
return true;
}
return false;
}
实现如下:
$user->isInGroup(['Accounts', 'Sales', 'Marketing']);
但是检查需要很长时间。
有人知道解决我问题的改进方法吗?
答案 0 :(得分:1)
是的,可以通过Adldap的查询生成器来完成。
namespace Cal
{
class Program
{
static void Main(string[] args)
{
int a;
int b;
int hello;
string d;
Console.WriteLine("Input First Number: ");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Input Second Number: ");
b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Plus+, Minus-, Division/, Multiplication*: ");
d = Console.ReadLine();
if (d == "+")
{
hello = a + b;
}
else if (d == "-")
{
hello = a - b;
}
else if (d == "/")
{
hello = a / b;
}
else if (d == "*")
{
hello = a * b;
}
Console.WriteLine("Equals: ");
Console.WriteLine(hello);
}
}
}
此 samaccountname 可能与您的LDAP提供程序的字段名称不同。无论如何,如果您有任何语法或方法名称错误,我都无法对其进行测试,您将在 /**
* LDAP helper, to see if the user is in an AD group.
* Iterate through and break when a match is found.
*
* @param mixed $input
* @return bool
*/
public function isInGroup($input){
if (is_string($input)) {
$input[] = $input;
}
$counter = 0;
$groupQuery = $this->ldap->search()->groups();
foreach ($input as $group) {
if ($counter == 0) {
$groupQuery->where('samaccountname', '=', $group);
} else {
$groupQuery->orWhere('samaccountname', '=', $group);
}
$counter++;
}
return $groupQuery->get()->count();
}
中找到相同的方法。算法/过程相同。