Laravel 5多重身份验证

时间:2015-06-06 12:06:38

标签: authentication laravel-5

如何在Laravel 5中设置多个身份验证。开箱即用,您只能设置1个身份验证。如果我有一个customers表和一个admin表并且希望为每个表设置身份验证怎么办?每个经过身份验证的用户类型应该被限制查看或访问管理页面,反之亦然?

*更新*

我创建了一个用户表,其中包含求职者和招聘人员共同的信息,即姓名,密码等。

我已经创建了一个角色和role_user表

我创建了两个单独的表来保存jobseeker_profile和recruiter_profile

如何使用以下路由验证具有jobseeker类型角色的用户?

Route::get('jobseeker/login', 'Auth\AuthController@getLogin');
Route::post('jobseeker/login', 'Auth\AuthController@postLogin');
Route::get('recruiter/login', 'Auth\AuthController@getLogin');
Route::post('recruiter/login', 'Auth\AuthController@postLogin');

如何通过身份验证来保护路由 - 以下是中间件如何知道用户类型:

Route::get('jobseeker/profile', ['middleware' => 'auth', 'uses' => 'JobseekerProfileController@show']);
Route::get('jobseeker/profile/update', ['middleware' => 'auth', 'uses' => 'JobseekerProfileController@updateProfile']);

class JobseekerProfileController extends Controller {


  public function updateProfile()
  {
    if (Auth::user())
    {
        // Auth::user() returns an instance of the authenticated user...
    }
  }

}

Laravel 5身份验证控制器使用以下特征 - 您是否可以使用您的答案编辑特征,或者使用下面的答案创建新的身份验证控制器?

trait AuthenticatesAndRegistersUsers {

 public function postLogin(Request $request)
 {
    $this->validate($request, [
        'email' => 'required|email', 'password' => 'required',
    ]);

    $credentials = $request->only('email', 'password');

    if ($this->auth->attempt($credentials, $request->has('remember')))
    {
        return redirect()->intended($this->redirectPath());
    }

    return redirect($this->loginPath())
                ->withInput($request->only('email', 'remember'))
                ->withErrors([
                    'email' => 'These credentials do not match our records.',
                ]);
 }
}

2 个答案:

答案 0 :(得分:1)

您可以相应地为每个用户创建数据库分配角色中的角色表,然后在登录时检查用户具有哪个角色,然后您可以相应地重定向/显示页面。无需为每种类型的用户创建单独的表。

编辑回答

{{1}}

答案 1 :(得分:0)

您可以通过此软件包实现多种身份验证

https://packagist.org/packages/sarav/laravel-multiauth

有关更详细的解释,请查看我之前在此处返回的答案

How to use authentication for multiple tables in Laravel 5