【发布时间】:2014-08-06 05:50:33
【问题描述】:
我有下表
id email password role
1 someemail password admin
2 someemail password guest
访客是可以访问前端少数特权部分的人(例如:评论博客文章等)
访客通常使用 oauth 通过 facebook 注册。我已阻止访客进行管理员登录,如下所示
if (Auth::attempt(array('email'=>Input::get('email'), 'password'=>Input::get('password'),'role'=>'admin'))) {
但问题是,当用户从 facebook 登录时,会话是共享的,并且也可以访问管理员。
facebook登录代码如下
//$result hold facebook information
$user->firstname = $result['first_name'];
$user->lastname = $result['last_name'];
$user->email = $result['email'];
$user->password ='sample';
$user->role='facebook';
//check user with same email is already there
$usr = User::where('email', '=', $result['email'])->count();
if($usr==0)
$user->save();
//automatically login the registered user
$user = User::where('email', '=', $user->email)->where('role', '=', 'facebook')->first();
Auth::login($user);
现在在每个控制器中,我在构造函数上调用了以下函数
public function __construct() {
$this->beforeFilter('auth');
}
这不足以阻止来宾用户的会话共享。任何帮助将不胜感激
【问题讨论】:
标签: php facebook authentication laravel oauth