1

我有 3 种类型的用户:

  1. 客户
  2. 行政
  3. 超级管理员

现在,我需要同时允许adminsuper admin登录我的管理门户如何实现身份验证,我们将以数组形式放入我们的凭据,例如:

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

我怎样才能同时允许adminsuper adminAuth如果我只被允许在我的数组中声明,usertype$creds

4

3 回答 3

0

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

于 2013-07-05T12:08:45.547 回答
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。

于 2013-07-06T01:12:41.467 回答
-1

你可以使用我发现的一个小技巧。在凭证数组上,您可以将 DB::RAW 添加到您的条件中,如下所示:

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

也许不是最好的解决方案,但它确实有效。您可以检查您的查询以查看是否正常

于 2013-10-07T10:14:16.870 回答