sboo / multiauth
Requires
- php: >=5.4.0
- illuminate/auth: ~5.0|~5.1
- illuminate/console: ~5.0|~5.1
- illuminate/database: ~5.0|~5.1
- illuminate/filesystem: ~5.0|~5.1
- illuminate/support: ~5.0|~5.1
This package is not auto-updated.
Last update: 2022-02-01 12:45:56 UTC
README
请前往https://github.com/Kbwebs/MultiAuth作为替代。kbwebs的分支与Laravel 5.1完全兼容。从我的分支迁移到这个版本不需要对您的代码进行任何更改。
Laravel Multi Auth
- Laravel: 5
- 作者: Ramon Ackermann
- 作者主页: https://github.com/sboo
- 作者: Ollie Read
- 作者主页: http://ollieread.com
有关Laravel 4.2版本,请参阅https://github.com/ollieread/multiauth
重要:Laravel 5.1 默认AuthController及其特性和行为
\Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers
更具体地说
Illuminate\Foundation\Auth\AuthenticatesUsers::postLogin()
不工作!目前,您需要自己编写Controller。如果有时间,我会处理这个问题。
此包不是laravels默认Auth库的替代品,而是在您的代码和库之间的一种东西。
将其视为Auth的工厂类。现在,您不再只有一个表/模型来验证用户,而是可以有多个,并且与先前版本的此包不同,您有权访问所有功能,甚至可以为每种用户类型使用不同的驱动程序。
此外,您还可以同时使用多种认证类型,因此您可以同时作为用户、主账户和管理员登录,而不会发生冲突!
自定义认证驱动程序
在当前这个时间点,为基本Auth类编写的自定义Auth驱动程序将不起作用。我目前正在研究这个问题,但在此期间,您可以更改您的闭包以返回Ollieread\Multiauth\Guard
的实例,而不是默认实例。
安装
首先,您需要将此包包含在您的composer.json文件中。
"require": { "sboo/multiauth" : "4.0.*" }
然后,您将需要通过composer更新或安装。
composer update
接下来,您打开app/config/app.php,将'Illuminate\Auth\AuthServiceProvider'替换为
'Ollieread\Multiauth\MultiauthServiceProvider',
将'Illuminate\Auth\Passwords\PasswordResetServiceProvider'替换为
'Ollieread\Multiauth\Passwords\PasswordResetServiceProvider',
注意 替换默认服务提供商非常重要。
删除password_resets的原生数据库迁移。
##配置##
也很简单,使用默认值的config/auth.php
return [ 'driver' => 'eloquent', 'model' => 'App\User', 'table' => 'users', 'password' => [ 'email' => 'emails.password', 'table' => 'password_resets', 'expire' => 60, ], ];
现在删除前三个选项(驱动程序、模型和表),并按以下方式替换
return [ 'multi' => [ 'admin' => [ 'driver' => 'eloquent', 'model' => 'App\Admin', ], 'client' => [ 'driver' => 'database', 'table' => 'clients', 'email' => 'client.emails.password', ] ], 'password' => [ 'email' => 'emails.password', 'table' => 'password_resets', 'expire' => 60, ], ];
这是一个示例配置。请注意,您将不得不为每种用户类型创建模型和迁移。以App/User.php和2014_10_12_000000_create_users_table.php为例。
如果您希望为每种用户类型使用不同的提醒电子邮件视图,只需在每个类型中添加一个电子邮件选项,如上例所示。
要生成提醒表,您需要运行以下命令。
php artisan multiauth:resets-table
同样地,如果您想清除所有提醒,您需要运行以下命令。
php artisan multiauth:clear-resets
您还需要将现有的默认Laravel 5文件更改为适应多种认证和密码类型。按照以下代码片段操作
https://gist.github.com/sboo/10943f39429b001dd9d0
用法
所有操作都与原始库完全相同,唯一的例外是所有方法调用都以前缀键(在上面的示例中为account或user)作为方法本身。
Auth::admin()->attempt(array( 'email' => $attributes['email'], 'password' => $attributes['password'], )); Auth::client()->attempt(array( 'email' => $attributes['email'], 'password' => $attributes['password'], )); Auth::admin()->check(); Auth::client()->check();
我发现必须调用名为user的用户类型中的user()方法看起来很乱,所以我添加了一个很好的get方法来包裹它。
Auth::admin()->get();
在您可以模仿另一个用户类型的用户类型的实例中,例如管理员模仿用户来重新创建或检查某些内容时,我添加了一个impersonate()方法,该方法只是对请求用户类型上的loginUsingId()进行包装。
Auth::admin()->impersonate('client', 1, true);
第一个参数是用户类型,第二个是该用户的id,第三个是是否记住用户,默认为false,所以通常可以省略。
以此类推。
这就完成了!祝您玩得开心。
测试
Laravel集成/控制器测试在基础TestCase类中实现了$
public function authenticateAs($type, $user) { $this->app['auth']->$type()->setUser($user); }
许可证
本包继承自其父框架Laravel的许可权,因此是开源软件,根据MIT许可证授权