我有3种类型的用户:
现在,我需要同时允许admin
和super admin
登录我的管理门户网站,以便实现我们将以数据格式放入数组的身份验证,例如:
$creds = array('username'=>Input::get('uname'),'password'=>Input::get('pwd'),'usertype'=>$utype);
如果我只允许在admin
数组中声明super admin
一次,我如何同时允许Auth
usertype
和$creds
?
答案 0 :(得分:0)
将一些群组应用于您的用户,将用户添加到群组并对其进行验证。 (甚至,将ACL应用于组,并检查它) 未来是否需要更多类型的用户,您只需将它们添加到组中,而不是更改$ creds数组。
答案 1 :(得分:0)
我们都知道,如果我们要尝试进行授权,我们将传递一系列凭证。我的问题我的usertype
可以有两个值(admin
和super 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。
答案 2 :(得分:-1)
你可以使用我发现的小技巧。在凭证数组上,您可以将DB :: RAW添加到您的条件中:
$creds = array(
'username'=> Input::get('uname'),
'password'=> DB:RAW(Input::get('pwd') . ' and `usertype` in (your user types);
也许不是最好的解决方案,但它有效。您可以检查您的查询以确定它没问题