Silverstripe 4 - класс аутентификатора не найден - PullRequest
0 голосов
/ 18 мая 2018

Я бы позволил предварительно сгенерированным пользователям выходить из веб-сайта SilverStripe 4, используя значение по умолчанию from.Выход из системы, поскольку вход в систему работает.

Проблема заключается в том, что если зарегистрированный универсальный пользователь пытается выйти из системы, щелкнув ссылку, например Security/logout (а также Security/logout?BackURL=home/), он перенаправляется на пустое место.страница (только с видимым верхним / нижним колонтитулом, так как по умолчанию Page.ss реализовано).Очевидно, контроллер не работает или не похож на него, потому что URL указывает мне просто на Security/logout без следующих перенаправлений.

Итак, я попытался реализовать собственный аутентификатор, как я обычно делаю в SS 3, но язаметил некоторые небольшие различия.Затем я последовал как за официальным документом , так и за предложенным примером для получения помощи.

Вот такая ситуация:

Пользовательский класс MemberAuthenticatorMySite / код )

<?php
// Definizione Namespace
namespace Greylab\Corporate\Authenticator\UtenteAuthenticator;
use SilverStripe\Security\MemberAuthenticator\Authenticator;

/**
* Classe Autenticazione Utente
*/
class UtenteAuthenticator extends Authenticator
{
/**
 * Login Paziente - Getter
 * @param string $link URL di autenteicazione utente
 * @return object Form di autenticazione utente
 */
public function getLoginHandler($link)
{
    return UtenteLoginHandler::create($link, $this);
}
}

MemberAuthenticator \ LoginHandler пользовательский класс MySite / код )

<?php
// Definizione Namespace
use SilverStripe\Security\MemberAuthenticator\LoginHandler;
use SilverStripe\Control\Session;

/**
 * Clesse Login Utente
 */
class UtenteLoginHandler extends LoginHandler
{
    /**
     * Metodo gestione Login Utente
     * Setter
     * @param array $dati Dati form login
     * @param object $form Form login
     * @return void
     */
    public function doLogin($dati, $form)
    {
        $utente = $this->checkLogin($dati);

        // Controllo Utente
        if ($utente) {
            $cliente = Session::set('UtenteLoginHandler.MemberID', $utente->ID);
            $datiCliente = Session::set('UtenteLoginHandler.Data', $dati);

            $this->performLogin($cliente, $datiCliente);

            return $this->redirectAfterSuccessfulLogin();
        } else {
            // Se utente invalido torna al form
            return $this->redirectBack();
        }
    }
}

Пользовательский класс MemberAuthenticator \ LoginHandler (в _MySite / config / mysite.yml )

SilverStripe\Core\Injector\Injector:
  SilverStripe\Security\Security:
    properties:
      Authenticators:
        UtenteAuthenticator: %$Greylab\Corporate\Authenticator\UtenteAuthenticator

С этой реализацией система выдает мне этоисключение:

Неустранимая ошибка PHP: класс 'SilverStripe \ Security \ MemberAuthenticator \ Authenticator' не найден в /Applications/MAMP/htdocs/corporate/ss_corporate/corporate/code/UtenteAuthenticator.php в строке 10

Кто-нибудь может подсказать мне правильный путь?

Спасибо всем заранее.

1 Ответ

0 голосов
/ 19 мая 2018

Возможно, вам понадобится

use SilverStripe\Security\MemberAuthenticator\CMSMemberAuthenticator

Проверьте документы: http://api.silverstripe.org/4/SilverStripe/Security/MemberAuthenticator.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...