Php 在Bolt cms中实现自定义用户/登录提供程序
我目前正在评估更改Bolt用户提供程序和关联视图以使用某些自定义用户/登录服务的选项。到目前为止,我似乎不得不修改Bolt源代码的一些核心元素,这显然是一个错误的选择:Php 在Bolt cms中实现自定义用户/登录提供程序,php,bolt-cms,Php,Bolt Cms,我目前正在评估更改Bolt用户提供程序和关联视图以使用某些自定义用户/登录服务的选项。到目前为止,我似乎不得不修改Bolt源代码的一些核心元素,这显然是一个错误的选择: 将用户服务替换为自定义类(相同界面) 更改/扩展后端类,因为它正在路由和呈现关联视图本身 关于如何在对核心源代码影响最小的情况下实现这一点,您有什么想法吗?很多想法都取决于您希望更改的程度,但正如您提到的,在Silex中交换服务非常容易,您需要做的是: <?php namespace Custom; use Bolt\
- 将
服务替换为自定义类(相同界面)用户
- 更改/扩展
类,因为它正在路由和呈现关联视图本身后端
关于如何在对核心源代码影响最小的情况下实现这一点,您有什么想法吗?很多想法都取决于您希望更改的程度,但正如您提到的,在Silex中交换服务非常容易,您需要做的是:
<?php
namespace Custom;
use Bolt\Users;
// src/Custom/UserService
class UserService extends Users {}
由于Bolt服务体系结构目前没有覆盖certian核心功能所需的那么干净,而且由于目前正在为Symfony 5 Flex重写它,因为path目前并不真正可行
但是!两个月以来,博尔特的用户服务中出现了一种新的loginAsUser
方法。现在,您可以选择使用Bolt的user Repostory创建自己的用户,然后作为该用户登录
以下是一些示例代码snippet,您可以在扩展中进行调整和使用:
注意:这是不完整的示例代码。由于修改/绕过登录系统是riskay,建议您充分阅读和理解Bolt的用户和身份验证服务。
此外,此代码使用的内部方法不适用于扩展,可能会发生更改。这样做的风险由您自己承担,并使用谨慎的错误处理
创建用户
/* @var Repository\UsersRepository $repository */
$repository = $this->app["storage"]->getRepository(Users::class);
$userEntity = new Users();
... set user attributes ...
$repository->save($userEntity);
以用户身份登录
$event = new AccessControlEvent($request);
$this->login()->loginAsUser($user->getEmail(), $event);
$token = $this->session()->get('authentication');
$response = $this->setAuthenticationCookie($request, $response, (string) $token);
因为后端控制器(呈现管理视图)本身在做登录视图,我想我也必须在那里做同样的事情?
$event = new AccessControlEvent($request);
$this->login()->loginAsUser($user->getEmail(), $event);
$token = $this->session()->get('authentication');
$response = $this->setAuthenticationCookie($request, $response, (string) $token);