Wallogit.com
2017 © Pedro Peláez
将用户独立出一个模块,以提高代码可复用性
将用户独立出一个模块,以提高代码可复用性。, (*1)
本模块除Laravel本身外,
不依赖其它模块。, (*2)
通过composer安装, (*3)
composer require goodwong/laravel-user
修改config/auth.php:, (*4)
App\User::class, // 修改为 Goodwong\User\Entities\User::class,
同样修改config/services.php:, (*5)
App\User::class, // 修改为 Goodwong\User\Entities\User::class,
查询用户, (*6)
// User 继承自Eloquent $user = Goodwong\User\Entities\User::find($user_id); $users = Goodwong\User\Entities\User::get();
** 注意:** 不要使用Eloquent方式创建用户, (*7)
通过Goodwong\User\Handlers\UserHandler创建用户, (*8)
$userHandler = app('Goodwong\User\Handlers\UserHandler');
$attributes = [
'name' => 'User Name',
'email' => 'email', // unique, 可以使用任意字符串,只要保证唯一
'password' => 'xxxx' // raw password, optional
];
$user = $userHandler->create($attributes);
通过Goodwong\User\Handlers\AuthHandler登录用户, (*9)
$authHandler = app('Goodwong\User\Handlers\AuthHandler');
$authHandler->login($user);
~~$success = $authHandler->attempt($credentials);~~ // 暂未实现
** 注意:** 不要使用
Auth::login($user);,这样得不到事件通知, (*10)
UserCreated 创建用户触发, (*11)
UserAuthorized 用户登录系统触发, (*12)
Laravel 5.4在使用第三方插件的路由规则时有问题,见 When namespaces begin with
\they should reset. #18078, (*13)
所以需要修改app/Providers/RouteServiceProvider.php文件,并且所有路由规则不能省略命名空间。, (*14)
同时嵌套第三方路由规则时注意外层不要包裹命名空间,例如这样:, (*15)
// routes/web.php Route::group(['namespace' => 'App\\Http\\Controllers'], function () { William\\SomePackage\\Router::route(); }); // 这样是**不对的**,会导致最终调用的是 // App\Http\Controllers\William\SomePackage\Router::route()
class RouteServiceProvider extends ServiceProvider
{
/**
* This namespace is applied to your controller routes.
*
* In addition, it is set as the URL generator's root namespace.
*
* @var string
*/
protected $namespace = 'App\Http\Controllers';
// 修改为
protected $namespace = '';
...
}
修改 routes/web.php,增加:, (*16)
\Goodwong\User\Router::route();
当然你也可以嵌套prefix、middleware, (*17)
Route::group(['prefix' => '/auth'], function () {
\Goodwong\User\Router::route();
});
但是不可以嵌套~~namespace~~,例如这样:, (*18)
// 这样是错误的
Route::group(['namespace' => 'App\\Http\\Controllers'], function () {
\Goodwong\User\Router::route();
});
增加更多事件, (*19)
UserLogouted注册用户, (*20)
管理用户, (*21)
支持非cookie的登录方案(用于app、微信小程序), (*22)