2013-07-05 15 views
1

我有3种类型的用户:Laravel 4:有两个可选值用户类型的身份验证凭据

  1. 客户
  2. 联系
  3. 超级管理员

现在,我需要让adminsuper admin这两个登录我的管理员门户如何实施身份验证我们打算把我们的凭据阵列形式:

$creds = array('username'=>Input::get('uname'),'password'=>Input::get('pwd'),'usertype'=>$utype); 

我怎样才能让在Authadminsuper admin如果我只允许申报一次usertype$creds阵列?

+0

罗布下面给出你应该做什么的一些方向,但我们需要更多的信息来帮助你更具体地回答你。为什么/如何只能定义'usertype'一次的限制? – fideloper

回答

0

将一些组应用到您的用户,将该用户添加到组中并对其进行验证。 (甚至,将ACL应用于组,并检查它) 未来是否需要更多类型的用户,您可以将它们添加到组中而不是更改$ creds数组。

0

我们都知道,如果我们要尝试认证,我们将传递一系列凭证。我的问题我usertype可以有两个值(adminsuper admin),但我们不能放两个usertype在数组中是这样的:

$creds = array('username'=>$uname,'password'=>$pwd,'usertype'=>'admin','usertype'=>'super admin'); 

解决方法:这种情况的唯一办法就是分组它(因为那一刻我想到的。 )

Route::filter('admin-auth', function(){ 
if(Auth::guest() || Auth::user()->usertype == 'client' || Auth::user()->active == 0) return Redirect::to('admin/login?ret='.Request::url()); 
}); 

注:Redirect::to('admin/login?ret='.Request::url())是不可取的,因为laravel已具有Redirect::intended()功能,如果你要有人重定向到某个页面认证成功后,因为进出口使用AJAX但我这样做。

-1

你可以使用我发现的一个小窍门。你可以像这样添加DB :: RAW到你的条件:

$creds = array(
       'username'=> Input::get('uname'), 
       'password'=> DB:RAW(Input::get('pwd') . ' and `usertype` in (your user types); 

也许不是最好的解决方案,但它的工作原理。您可以检查您的查询,看看是否可以