【发布时间】:2017-08-12 20:56:33
【问题描述】:
我真的需要一些帮助。
背景: 我已经安装了 phpBB 3.0 并从我自己的站点的数据库中进行了外部身份验证。我的工作是对这个出色的工作示例的实现:https://github.com/nzeyimana/PhpBBAuthDbExt/blob/master/auth_dbext.php 我现在想将我的论坛升级到 3.2(当前版本)。
问题: 尝试遵循文档https://area51.phpbb.com/docs/dev/32x/extensions/tutorial_authentication.html#authentication-providers 以及 phpBB community/viewtopic.php?f=461&t=2272371 中的示例
我从示例文档中复制了类文件,将其命名为 db2.php 并放在“ext/acme/demo/auth/provider/”中 我还从示例文档中复制了服务文件,将其命名为 services.yml 并放在“ext/acme/demo/config/”中
两个文件内容的副本在下方。
根据文档,我应该在访问控制面板 (ACP) 的身份验证部分的身份验证方法列表中看到 db2 - 但什么也没有出现。我已经刷新了论坛缓存,刷新了我的浏览器缓存等,但无济于事。
我错过了什么吗?任何帮助真的很感激。
凯文
这是 db2.php 文件的内容:
#<?php
namespace acme\demo\auth\provider;
/**
* Database authentication provider for phpBB3
*
* This is for authentication via the integrated user table
*/
class db2 extends \phpbb\auth\provider\base
{
/** @var \phpbb\db\driver\driver_interface $db */
protected $db;
/**
* Database Authentication Constructor
*
* @param \phpbb\db\driver\driver_interface $db
*/
public function __construct(\phpbb\db\driver\driver_interface $db)
{
$this->db = $db;
}
/**
* {@inheritdoc}
*/
public function login($username, $password)
{
// Auth plugins get the password untrimmed.
// For compatibility we trim() here.
$password = trim($password);
// do not allow empty password
if (!$password)
{
return array(
'status' => LOGIN_ERROR_PASSWORD,
'error_msg' => 'NO_PASSWORD_SUPPLIED',
'user_row' => array('user_id' => ANONYMOUS),
);
}
if (!$username)
{
return array(
'status' => LOGIN_ERROR_USERNAME,
'error_msg' => 'LOGIN_ERROR_USERNAME',
'user_row' => array('user_id' => ANONYMOUS),
);
}
$username_clean = utf8_clean_string($username);
$sql = 'SELECT user_id, username, user_password, user_passchg, user_pass_convert, user_email, user_type, user_login_attempts
FROM ' . USERS_TABLE . "
WHERE username_clean = '" . $this->db->sql_escape($username_clean) . "'";
$result = $this->db->sql_query($sql);
$row = $this->db->sql_fetchrow($result);
$this->db->sql_freeresult($result);
// Successful login... set user_login_attempts to zero...
return array(
'status' => LOGIN_SUCCESS,
'error_msg' => false,
'user_row' => $row,
);
}
}
#
这是 services.yml 文件的内容:
#services:
auth.provider.db2:
class: acme\demo\auth\provider\db2
arguments:
- '@dbal.conn'
tags:
- { name: auth.provider }
#
【问题讨论】:
标签: authentication phpbb3