Cakephp 当我想用身份验证插件分离模型时,我该怎么做?

Cakephp 当我想用身份验证插件分离模型时,我该怎么做?,cakephp,cakephp-4.x,Cakephp,Cakephp 4.x,我目前正在CakePHP4中实现登录功能。 所以我想把它分为普通用户模型和管理用户模型 我根本不知道该怎么做,我花了一整天的时间寻找实现它的方法,但我做不到 我想在“routes.php”中设置身份验证,但在“Application.php”中“implementing AuthenticationServiceProviderInterface”遇到了问题。我该怎么办 //routes.php $routes->scope('/',函数(RouteBuilder$builder){ /....

我目前正在CakePHP4中实现登录功能。 所以我想把它分为普通用户模型和管理用户模型

我根本不知道该怎么做,我花了一整天的时间寻找实现它的方法,但我做不到

我想在“routes.php”中设置身份验证,但在“Application.php”中“implementing AuthenticationServiceProviderInterface”遇到了问题。我该怎么办

//routes.php
$routes->scope('/',函数(RouteBuilder$builder){
/......./
// ログイン
//$builder->connect('mgt-account/*',['controller'=>'MgtAccount','action'=>'login','prefix'=>'Admin']);
$builder->connect('users/*',['controller'=>'users','action'=>'login','prefix'=>'Normal']);
/......./
});
$routes->prefix('Normal',函数(RouteBuilder$routes){
$loginUrl=Router::url('/normal/users/login');
$fields=[
“用户名”=>“邮件”,
“密码”=>“密码”,
];
$service=newauthenticationservice([
“unauthenticatedRedirect”=>$loginUrl,
'queryParam'=>'redirect',
]);
$service->loadAuthenticator('Authentication.Session');
$service->loadAuthenticator('Authentication.Form'[
“字段”=>$fields,
'loginUrl'=>$loginUrl,
]);
$service->loadIdentifier('Authentication.Password',compact('fields');
$routes->registerMiddle软件(
“auth”,
新建\身份验证\中间件\身份验证中间件($service)
);
$routes->applyMiddleware('auth');
//$routes->connect('/:controller');
$routes->fallbacks(DashedRoute::class);
});
$routes->prefix('Admin',函数(RouteBuilder$routes){
$loginUrl=Router::url('/admin/mgt account/login');
$fields=[
“用户名”=>“邮件”,
“密码”=>“密码”,
];
$service=newauthenticationservice([
“unauthenticatedRedirect”=>$loginUrl,
'queryParam'=>'redirect',
]);
$service->loadAuthenticator('Authentication.Session');
$service->loadAuthenticator('Authentication.Form'[
“字段”=>$fields,
'loginUrl'=>$loginUrl,
]);
$service->loadIdentifier('Authentication.Password',compact('fields');
$routes->registerMiddle软件(
“auth”,
新建\身份验证\中间件\身份验证中间件($service)
);
$routes->applyMiddleware('auth');
//$routes->connect('/:controller');
$routes->fallbacks(DashedRoute::class);
});

我认为答案是根据当前请求(管理员或普通用户)加载正确的中间件身份验证程序。但我还没有多次身份验证,所以可能不正确。在Application.php方法getAuthenticationService()中,调用loadIdentifier(),根据当前请求URL(或您如何区分管理员URL)指定一个或另一个“解析器”

CakePHP 4.x文档中有一节介绍了多个身份验证方案。我相信你可以用两张不同的桌子


此论坛项目可能有您需要的答案(问题下方的答案):

我相信答案是根据当前请求(管理员或普通用户)加载正确的中间件身份验证程序。但我还没有多次身份验证,所以可能不正确。在Application.php方法getAuthenticationService()中,调用loadIdentifier(),根据当前请求URL(或您如何区分管理员URL)指定一个或另一个“解析器”

CakePHP 4.x文档中有一节介绍了多个身份验证方案。我相信你可以用两张不同的桌子


此论坛项目可能有您需要的答案(问题下方的答案):

通常不需要两次单独登录,而是通过将角色附加到用户,并且仅允许根据用户的角色访问某些内容。感谢您与我联系。对不起,CakePHP是我的第一本书,我想知道你是否可以告诉我更多关于它的信息。我是指给你看这个网页,还是我做了一些改变?这是否意味着应该有一张桌子?如果我真的想用两张桌子怎么办?我想那页是关于别的东西的。不是运行两个单独的身份验证,而是在站点的子文件夹中运行一个标准的CakePHP应用程序。如果你真的想使用两个表,我没有任何帮助。我可以告诉你,与基于角色的方法相比,它可能会使事情变得复杂一些。你所做的事情很难找到帮助,因为这很少见。因此,您的代码可能会变得更加脆弱。如果您需要更改有关身份验证的内容,可能需要在两个地方进行所有这些更改。当然,如果你愿意,你可以继续走这条路。问问你自己,你是否真的需要这样做,或者你是否正试图让一个圆钉适合一个方孔。这通常不是通过两个单独的登录来完成的,而是通过将角色附加到用户,并且只允许根据用户的角色访问某些内容。谢谢你与我联系。对不起,CakePHP是我的第一本书,我想知道你是否可以告诉我更多关于它的信息。我是指给你看这个网页,还是我做了一些改变?这是否意味着应该有一张桌子?如果我真的想用两张桌子怎么办?我想那页是关于别的东西的。不是运行两个单独的身份验证,而是在站点的子文件夹中运行一个标准的CakePHP应用程序。如果你真的想使用两个表,我没有任何帮助。我可以告诉你,与基于角色的方法相比,它可能会使事情变得复杂一些。你所做的事情很难找到帮助,因为这很少见。因此,您的代码可能会变得更加脆弱。如果您需要更改有关身份验证的内容,可能需要在两个地方进行所有更改