aiyuchen / wordpress-auth-provider
为Laravel身份验证系统提供WordPress用户的包。
Requires
- php: ^7.1|^8.0
- hautelook/phpass: >=0.3
- laravel/framework: ^5.6|^6.0|^7.0|^8.0|^9.0
README
安装
要安装此包,您需要Laravel 5.*
- Laravel ^5.6|^6.0|^7.0|^8.0|^9.0 (适用于Laravel旧版本)
- PHP 7.1
Laravel 6.*
- Laravel 6.1
- PHP >= 7.2
使用composer安装此包是最佳方式。运行
composer require aiyuchen/wordpress-auth-provider
或将其添加到composer.json
中,然后运行composer update
来安装它
"require": {
"aiyuchen/wordpress-auth-provider": "*",
}
配置
一旦您通过composer安装了此包,请确保按照以下步骤进行配置。
注册身份验证守卫。
config/auth.php
'guards' => [ ..., 'wordpress' => [ 'driver' => 'session', 'provider' => 'wordpress', ],
'providers' => [ ..., 'wordpress' => [ 'driver' => 'eloquent.wordpress', 'model' => MrShan0\WordpressAuth\Models\WordpressUser::class, ],
'passwords' => [ ..., 'wordpress' => [ 'provider' => 'wordpress', 'table' => 'password_resets', 'expire' => 60, ],
发布配置文件(可选)
php artisan vendor:publish --provider="MrShan0\WordpressAuth\WordpressAuthServiceProvider"
它将发布配置文件(config/wordpress-auth.php
),其中您可以定义自己的连接类型,例如wp-mysql
。如果您在WordPress表中使用前缀,请确保在config/database.php
中的prefix
填充wp_
前缀。
例如
'wp-mysql' => [ 'driver' => 'mysql', 'host' => env('WP_DB_HOST', '127.0.0.1'), 'port' => env('WP_DB_PORT', '3306'), 'database' => env('WP_DB_DATABASE', 'forge'), 'username' => env('WP_DB_USERNAME', 'forge'), 'password' => env('WP_DB_PASSWORD', ''), 'unix_socket' => env('WP_DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => 'wp_', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, ],
配置
password_resets
表(来自Laravel默认认证机制)用于保存重置密码令牌。如果您没有password_resets
表,则使用此迁移
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreatePasswordResetsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('password_resets', function (Blueprint $table) {
$table->string('email')->index();
$table->string('token');
$table->timestamp('created_at')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('password_resets');
}
}
扩展
或者,如果您想使用自定义用户模型,应该让它继承MrShan0\WordpressAuth\Models\WordpressUser
,并在config/auth.php
中的providers
-> wordpress
-> model
下指定您的模型名称。
自定义
如果您已重命名WordPress数据库中的user_email
列,则首先需要发布此包的配置(如果您尚未发布),然后按上述方式扩展模型,并确保在用于认证框架和发送通知的$fillable
属性和config/wordpress-auth.php
配置文件中覆盖您的更改。
用法
您需要明确定义wordpress
guard来加载驱动程序。
示例
Auth::guard('wordpress')->loginUsingId(5); // or login using email and password Auth::guard('wordpress')->attempt([ 'user_email' => 'demo@example.com', 'user_pass' => 'quickbrownfox' ]); // get user object Auth::guard('wordpress')->user(); // Update wordpress compatible password $user->user_pass = app('wordpress-auth')->make('new_password'); $user->save(); // logout Auth::guard('wordpress')->logout();
您还可以在config/auth.php
中更改默认守卫,然后您的代码将如下所示
Auth::loginUsingId(5);
如果您没有设置默认守卫并想利用Laravel中的密码重置(认证框架),您可能需要在Auth/ForgotPasswordController.php
和Auth/ResetPasswordController.php
中明确定义guard
和broker
,如下所示
/** * Get the broker to be used during password reset. * * @return \Illuminate\Contracts\Auth\PasswordBroker */ public function broker() { return \Password::broker('wordpress'); } /** * Get the guard to be used during password reset. * * @return \Illuminate\Contracts\Auth\StatefulGuard */ protected function guard() { return \Auth::guard('wordpress'); }
变更日志
致谢
感谢Laravel社区。
版权和许可证
版权(c)2016 Ahsaan Muhammad Yousuf,MIT许可证