Я бы позволил предварительно сгенерированным пользователям выходить из веб-сайта SilverStripe 4, используя значение по умолчанию from.Выход из системы, поскольку вход в систему работает.
Проблема заключается в том, что если зарегистрированный универсальный пользователь пытается выйти из системы, щелкнув ссылку, например Security/logout
(а также Security/logout?BackURL=home/
), он перенаправляется на пустое место.страница (только с видимым верхним / нижним колонтитулом, так как по умолчанию Page.ss
реализовано).Очевидно, контроллер не работает или не похож на него, потому что URL указывает мне просто на Security/logout
без следующих перенаправлений.
Итак, я попытался реализовать собственный аутентификатор, как я обычно делаю в SS 3, но язаметил некоторые небольшие различия.Затем я последовал как за официальным документом , так и за предложенным примером для получения помощи.
Вот такая ситуация:
Пользовательский класс MemberAuthenticator (в MySite / код )
<?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
Кто-нибудь может подсказать мне правильный путь?
Спасибо всем заранее.