分享

【auth】Laravel解决多张表身份验证的问题

 阿亮love 2015-12-01
参考:http://www./archives/96

Laravel的auth身份验证只支持一张表,如果项目中有多个角色存储在不同表中,比如users admins,就有些不足了,所以需要进行扩展,学的不深,我也无能为力,但是国外网友有解决方案,并共享在github上。

https://github.com/ollieread/multiauth

按这名老外的说法,这个解决方案并不会替换Laravel本身的auth库,只是介于auth库和你的代码之间的一个工厂类,废话不多说,看下怎么安装使用

安装

1.先备份的你的代码

这个不多说,如果你不想在出错后悲剧的话。


2.打开根目录下的composer.json,加入你要安装的包:

"require": {"ollieread/multiauth": "dev-master"}

 

3.安装

composer update


4.打开app/config/app.php 修改 AuthServiceProvider的配置

Illuminate\Auth\AuthServiceProvider

改成

Ollieread\Multiauth\MultiauthServiceProvider


使用

1.修改app/config/auth.php

return array(
 
'driver' => 'eloquent',
 
'model' => 'User',
 
'table' => 'users',
 
'reminder' => array(
 
'email' => 'emails.auth.reminder',
 
'table' => 'password_reminders',
 
'expire' => 60,
 
),
 
);

替换成

return array(
 
'multi' => array(
                'account' => array(
                'driver' => 'eloquent',
                 'model' => 'Account'
                 ),
'user' => array(
                'driver' => 'database',
                'table' => 'users'
               )
),
 
'reminder' => array(
                'email' => 'emails.auth.reminder',
                'table' => 'password_reminders',
                'expire' => 60,
),
 
);


2.使用方法

Auth::account()->attempt(array(
'email' => $attributes['email'],
'password' => $attributes['password'],
));


Auth::user()->attempt(array(
'email' => $attributes['email'],
'password' => $attributes['password'],
));


Auth::account()->check();
Auth::user()->check();

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多