laravel 4.2 如何检查是不是有用户登录多重身份验证

Posted

技术标签:

【中文标题】laravel 4.2 如何检查是不是有用户登录多重身份验证【英文标题】:laravel 4.2 How to check whether any user is logged in multi authlaravel 4.2 如何检查是否有用户登录多重身份验证 【发布时间】:2015-09-11 16:33:21 【问题描述】:

我在 Laravel 4.2 中使用 multiauth 和两个表 admin_profile 和 company。

public function Login()

    $LoginData = Input::except(array('_token'));
    //return $LoginData;
   if (Input::get('username')=='' || Input::get('password')=='') 
   
     if(!$LoginData['CompanyURL']=='')
        return Redirect::to('')->withInput()->with('Message', 'Enter Username and Password'); 
    else
        return Redirect::to('company/'.$LoginData['CompanyURL'])->withInput()->with('Message', 'Enter Username and Password'); 
   
    //Admin User
    if($LoginData['CompanyURL']=='')
    
       if (Auth::admin()->attempt(array_filter($LoginData)))
           
            $UserDetails = User::where('username', Input::get('username'))->first();

            if(count($UserDetails)>0)
                return Redirect::intended('home');      

       
       else
        return Redirect::to('')->withInput()->with('Message', 'UserName or Password Invalid');
    
    else
    
        if (Auth::user()->attempt($LoginData))
           
            //return $LoginData;
            $CompanyModel = User::where('username', Input::get('username'))->first();

            return Redirect::intended('company/'.$LoginData['CompanyURL'].'/home');
        
        return Redirect::to('company/'.$LoginData['CompanyURL'])->withInput()->with('Message', 'UserName or Password Invalid');
    

但我无法检查是否有管理员或公司类型的用户登录以打开需要用户身份验证的主页等页面

如何改变这个 Route::group(array('before' => 'auth'), function() 一些路线......

【问题讨论】:

您使用的是 ollieread/multiauth 包还是其他包? 是的,我正在使用 ollieread/multiauth 【参考方案1】:

您必须更改过滤器,请查看示例以了解如何修复它https://gist.github.com/ollieread/8303638

此外,如果您只想对公共页面使用一个身份验证过滤器,那么您的解决方案是,

Route::filter('auth', function()

    $guest = true;
    if (Auth::student()->guest() && Auth::teacher()->guest() && Auth::parent()->guest())
        $guest = false;
    
    if(!$guest)
        return Redirect::to('login');
    
);

我还建议您定义不同类型的过滤器,这些过滤器对于拥有路由权限的人非常有用,

    Route::filter('student', function()
    
      if (!Auth::student()->check() ) // Checks the current user
     
        return Redirect::to('login');
     
   );

Route::filter('teacher', function()

    if (! Auth::teacher()->check() ) // Checks the current user
    
        return Redirect::to('login');
    
);

【讨论】:

感谢您的回复 Muharrem Tigdemir

以上是关于laravel 4.2 如何检查是不是有用户登录多重身份验证的主要内容,如果未能解决你的问题,请参考以下文章

检查“其他”用户是不是使用 Laravel 5 登录/注销

想修改 laravel 默认登录来检查用户是不是被验证

Laravel 观察者检查用户是不是已登录

如何在 Laravel 4.2 中返回两次?

Laravel 和 jwt-auth。如何检查用户电子邮件是不是经过验证

如何在中间件中使用会话来始终检查用户是不是登录