zionon / multiauth
Laravel 5.1 的 MultiAuth
Requires
- php: >=5.5.9
- illuminate/auth: ~5.1
- illuminate/console: ~5.1
- illuminate/database: ~5.1
- illuminate/filesystem: ~5.1
- illuminate/support: ~5.1
This package is not auto-updated.
Last update: 2024-09-14 19:47:34 UTC
README
安装
代码基于Kbwebs/MultiAuth完善!!!
composer require zionon/multiauth "1.*"
身份验证
打开 config/app.php 文件,将 AuthServiceProvider 替换为
Illuminate\Auth\AuthServiceProvider::class -> Zionon\MultiAuth\AuthServiceProvider::class
打开 config/auth.php 文件,删除:(如果搭配entrust使用的话,建议保留)
'driver' => 'eloquent' 'model' => App\User::class, 'table' => 'users'
并替换为以下数组
'multi-auth' => [ 'user' => [ 'driver' => 'eloquent', 'model' => App\User::class ], 'admin' => [ 'driver' => 'eloquent', 'model' => App\Admin::class ] ]
如果想要使用数据库代替 Eloquent,可以这样使用
'user' => [ 'driver' => 'database', 'table' => 'users' ]
密码重置
如果后台不需要通过邮件重置密码的话(后台不建议开启邮件重置密码),使用laravel自带的即可,使用的是config/auth配置中'multi-auth'数组的第一个认证driver。只需要把默认的app/Http/Controllers/Auth/PasswordController
Illuminate\Foundation\Auth\ResetsPasswords -> Zionon\MultiAuth\Auth\ResetsPasswords
后台不需要邮件重置的密码的话,下面的可不需要做
打开 config/app.php 文件,将 PasswordResetServiceProvider 替换为
Illuminate\Auth\Passwords\PasswordResetServiceProvider::class -> Zionon\MultiAuth\PasswordResets\PasswordResetServiceProvider::class
如果你想要使用此包提供的密码重置功能,需要在每个使用密码重置功能的 Model 中做如下更改
use Illuminate\Auth\Passwords\CanResetPassword; use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
到
use Zionon\MultiAuth\PasswordResets\CanResetPassword; use Zionon\MultiAuth\PasswordResets\Contracts\CanResetPassword as CanResetPasswordContract;
如果你想要为每种身份验证类型更改密码重置的视图,可以将以下内容添加到 config/auth.php 中的 multi-auth 数组中
'email' => 'emails.users.password'
如果不添加此行,Laravel 将自动使用默认路径 emails.password,正如其在 password 数组中定义的那样。
要生成密码重置表,需要运行以下命令
php artisan zionon:multi-auth:create-resets-table
同样,如果你想要清除所有密码重置,需要运行以下命令
php artisan zionon:multi-auth:clear-resets
注意 替换默认服务提供者非常重要。如果你不希望使用密码重置,则应删除原始的密码重置服务提供者,否则将会引起错误。
使用方法
身份验证
直接使用 trait 即可
use Zionon\MultiAuth\Auth\ThrottlesLogins; use Zionon\MultiAuth\Auth\AuthenticatesAndRegistersUsers;
然后在控制器中指定使用的 model
protected $authModel = 'user'
其他属性和laravel自带的属性一样可以设置,新增的有
$loginView 登录显示文件
$registerView 注册显示文件
$remember 是否使用记住我功能
重点说明多重登录,比如可以同时使用用户名、邮件、手机号码登录,暂时只做了这三个,大部分情况应该也足够用了。
属性 $username 为多重登录的关键,如果属性未设置或为字符串则是单认证登录,默认为 email,可以改为用户名或手机号码。
如果 $username 是数组,则需要将登录认证的数组填入其中,默认使用的 name 为 authfield。如果自定义,则必须将 authfield 添加到数组中,否则会报错。
待办事项列表
完善密码重置以及密码重置页面自定义
完善README
编写一个demo
完善多重登录
密码重置
密码也已经重写,使用了 trait
它的工作方式与原始的 Laravel 身份验证库一样,唯一的区别是 user() 或 admin() 将匹配身份验证类型,正如你在 multi-auth 数组中定义的那样。
Password::sendResetLink($request->only('email'), function (Message $message) {
$message->subject($this->getEmailSubject());
});
但现在它必须如下所示,使用 user() 或 admin()
Password::user()->sendResetLink($request->only('email'), function (Message $message) {
$message->subject($this->getEmailSubject());
});
密码重置邮件示例
Click here to reset your password: {{ URL::to('password/reset', array($type, $token)) }}.
这会生成如下 URL
http://example.com/password/reset/user/21eb8ee5fe666r3b8d0521156bbf53266bnca572
这将匹配以下路由
Route::get('password/reset/{type}/{token}', 'Controller@method');
提示
请记住更新所有使用 Auth:: 的地方,改为 Auth::user() 或你在 config/auth.php 中定义的任何内容。