Justin's Words

Laravel Multi-Auth 管理

使用 Laravel 建站过程中我遇到了不同身份验证 (Multi-Auth) 的需求,我有一个用户身份验证管理,同时还有一个管理员身份验证管理,可惜 Laravel 本身不支持多身份验证,不过我还是找到了解决方案,那就是 ollieread/multiauth

安装

使用 Composer 安装,在 composer.json 里面添加依赖:

1
2
3
"require": {
"ollieread/multiauth": "dev-master"
}

然后 composer updatecomposer install 安装完成在 app/config/app.php'providers' 找到 AuthServiceProvider 替换,这很重要,因为你要做的就是替换掉默认的单种身份认证为支持多种身份认证:

1
2
3
4
5
6
'providers' => array(
...
// 'Illuminate\Auth\AuthServiceProvider',
'Ollieread\Multiauth\MultiauthServiceProvider',
...
),

接下来还得把 app/config/auth.php 改为 multiauth 支持的形式, 原来的 auth.php

1
2
3
4
5
6
7
8
9
10
return array(
'driver' => 'eloquent',
'model' => 'User',
'table' => 'users',
'reminder' => array(
'email' => 'emails.auth.reminder',
'table' => 'password_reminders',
'expire' => 60,
),
);

修改后的 auth.php

1
2
3
4
5
6
7
8
9
10
return array( 'multi' => array( 'account' => array( 'driver' => 'eloquent', 'model' => 'Account' ), 'user' => array(
// 这里你也可以用 eloquent,只是提供个不同的例子 'driver' => 'database', 'table' => 'users' ) ),

'reminder' => array(
'email' => 'emails.auth.reminder',
'table' => 'password_reminders',
'expire' => 60,
),

);

Reminders

这个我用不上,感兴趣去 Multiauth 查看

使用

非常简单,比如把 Auth::check() 换为 Auth::user()->check() 即可:

  • Auth::get() -> Auth::admin()->get()
  • Auth::attempt() -> Auth::user()->attempt()
  • Auth::logout() -> Auth::user()->logout()