Неверные учетные данные с Adldap :: search () - ›users () -› get ();

  • Версия Laravel: 5.4
  • Adldap2-Laravel Версия: ^ 3.0,
  • Версия PHP: 5.6.30

Мне удалось заставить работать соединение с AD, но я не могу заставить Auth :: try работать. Он всегда будет возвращать false. У кого-нибудь есть идея или намек?

public function login(Request $request) {

    $search = Adldap::search()->where('samaccountname', '=', 'tba')->get();
    // this is returning the correct user
    dd($search);

    //'username' => 'tba'
    // 'passwrod' => 'is the entered password'
    //this goes into error part
    if (Auth::attempt(request()->only('username', 'password'))) {
        dd('success');
    } else {
        dd('error');
    }

}

'usernames' = ›[

/*
|--------------------------------------------------------------------------
| LDAP
|--------------------------------------------------------------------------
|
| This is the LDAP users attribute that you use to authenticate
| against your LDAP server. This is usually the users
|'sAMAccountName' / 'userprincipalname' attribute.
|
| If you'd like to use their username to login instead, insert `samaccountname`.
|
*/

'ldap' => 'samaccountname',

/*
|--------------------------------------------------------------------------
| Eloquent
|--------------------------------------------------------------------------
|
| This is the attribute that is used for locating
| and storing the LDAP username above.
|
| If you're using a `username` field instead, change this to `username`.
|
| This option is only applicable to the DatabaseUserProvider.
|
*/

'eloquent' => 'username',

ах, верно и

Adldap :: auth () - ›попытка (запрос () -› только ('имя пользователя', 'пароль'))

дает мне исключение ErrorException: отсутствует аргумент 2 для Adldap \ Auth \ Guard :: try (), который вызывается в /media/sf_www/prm/app/Http/Controllers/Auth/LoginController.php в строке 63 и определяется ‹

ОБНОВИТЬ:

Мне удалось добиться успеха:

if (Adldap::auth()->attempt(request()->get('username'), request()->get('password'))) {
    dd('success');
} else {
    dd('error');
}

Я могу добиться успеха, странно то, что я должен использовать имя CN в качестве имени пользователя. если я использую samaccountname, которое не работает.

Более того, что интересно, Auth вообще не работает. Возвращает ложь

Auth::attempt(request()->only('username', 'password'))

Здесь мне может понадобиться помощь / введение.


person therabbityouknow    schedule 09.06.2017    source источник


Ответы (1)


Я думаю, это довольно просто. Функция ожидает 2 аргумента, вы передаете ей один аргумент. Беглый взгляд на документацию показывает, что первый аргумент - это имя пользователя, второй - пароль. При выполнении request()->only('args') вы получите array.

Вместо этого сделайте Auth::attempt(request()-get('username'), request()->get('password'))

person Ohgodwhy    schedule 09.06.2017
comment
да, это была ошибка с моей стороны. Код сейчас работает, но мне все равно возвращается false от. - person therabbityouknow; 09.06.2017