簡體   English   中英

在 Bolt cms 中實現自定義用戶/登錄提供程序

[英]Implementing custom user/login provider into Bolt cms

我目前正在評估更改 Bolt 用戶提供程序和相關視圖以使用某些自定義用戶/登錄服務的選項。 到目前為止,我似乎不得不修改 Bolt 源代碼的一些核心元素,這顯然是一個糟糕的選擇:

  • 用自定義類替換Users服務(相同的接口)
  • 更改/擴展Backend類,因為它本身正在路由和呈現關聯的視圖

關於如何在對核心源代碼影響最小的情況下進行的任何想法?

這很大程度上取決於您想要更改多少,但正如您提到的,在 Silex 中換出服務非常簡單,您只需要這樣做:

<?php
namespace Custom;
use Bolt\Users;
// src/Custom/UserService
class UserService extends Users {}

然后在您的引導程序中執行以下操作。

<?php
// public/index.php
require_once "../vendor/autoload.php";
$configuration = new Bolt\Configuration\Composer(dirname(__DIR__));
$app = new Bolt\Application(array('resources'=>$configuration));
$app['users'] = new Custom\UserService($app);
$app->initialize();
$app->run();

現在您的自定義用戶服務可以決定要覆蓋哪些核心 Bolt 方法。

由於 Bolt 服務架構目前不像覆蓋 certian 核心功能所需的那樣干凈,並且因為它目前正在為 Symfony 5 Flex 重寫,因為現在路徑並不真正可行。

但! 幾個月以來,Bolt 的用戶服務中有一個新的loginAsUser方法。 您現在可以選擇使用 Bolt 的用戶記錄創建您自己的用戶,然后以該用戶身份登錄。

以下是一些示例代碼片段,您可以在擴展程序中進行調整和使用:

注意:這是不完整的示例代碼。 由於修改/繞過登錄系統是有風險的,建議充分閱讀和理解 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM