Php Silverstripe 4-找不到身份验证程序类
我将允许预生成的用户使用默认的from从SilverStripe 4网站前端页面注销。注销,因为登录有效 问题是,如果登录的普通用户试图通过单击像Php Silverstripe 4-找不到身份验证程序类,php,silverstripe,silverstripe-4,Php,Silverstripe,Silverstripe 4,我将允许预生成的用户使用默认的from从SilverStripe 4网站前端页面注销。注销,因为登录有效 问题是,如果登录的普通用户试图通过单击像Security/logout(以及Security/logout?BackURL=home/)这样的链接注销,则会将其重定向到空白页面(只是页眉/页脚可见,因为实现了默认的page.ss)。显然,控制器不工作或类似,因为URL只将我指向Security/logout,而没有以下重定向 所以,我尝试实现一个自定义验证器,就像我在SS3中通常做的那样,但
Security/logout
(以及Security/logout?BackURL=home/
)这样的链接注销,则会将其重定向到空白页面(只是页眉/页脚可见,因为实现了默认的page.ss
)。显然,控制器不工作或类似,因为URL只将我指向Security/logout
,而没有以下重定向
所以,我尝试实现一个自定义验证器,就像我在SS3中通常做的那样,但是我注意到了一些小的差异。然后,我跟着和一起去寻求帮助
情况就是这样:
MemberAuthenticator自定义类
(在MySite/code中)
通过此实现,系统会向我抛出以下异常:
PHP致命错误:在第10行的/Applications/MAMP/htdocs/corporate/ss_corporate/corporate/code/uteAuthenticator.PHP中找不到类“SilverStripe\Security\MemberAuthenticator\Authenticator”
有人能给我建议正确的方法吗
提前感谢大家。您可能需要使用
use SilverStripe\Security\MemberAuthenticator\CMSMemberAuthenticator
查看文档:
谢谢@gavin,我更改了依赖项并更正了扩展语句。现在这个异常被解决了,但我仍然停留在空白页的问题上。我提出了一个新问题。可以在这里找到:
<?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();
}
}
}
SilverStripe\Core\Injector\Injector:
SilverStripe\Security\Security:
properties:
Authenticators:
UtenteAuthenticator: %$Greylab\Corporate\Authenticator\UtenteAuthenticator
use SilverStripe\Security\MemberAuthenticator\CMSMemberAuthenticator