我正在尝试使用两个表进行用户身份验证,其中一个表与“ users”不同,而另一个“ users”表是默认的Laravel表,请使用Laravel护照。详细信息是当我尝试使用第二个表登录时,由于无法识别第二个表的用户,所以无法进行身份验证。
-Tengo el modelo User2-> protected $guard_name = 'api2';
-使用otra锥刺-> protected $connection = 'mysql2';
**config/auth.php**
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
'api2' => [
'driver' => 'passport',
'provider' => 'users2',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'user2' => [
'driver' => 'eloquent',
'model' => App\User2::class,
],
],
我的控制器
public function login(Request $request)
{
if (Auth::attempt($request->only('email', 'password'))) {
$email = $request->only('email');
$token = $user->createToken('123456')->accessToken;
$user->withAccessToken($token);
$email=json_decode(json_encode($email));
$user = User2::where('email', $email->email )->first()->only('id','name','email','employee_id');
$user1 = User::find($user['id']);
if(!$user1->hasAnyRole(Role::all())){
return response()->json([
'success' => false,
'data' => '',
'msg' => "does not have assigned role"
], 403);
}
$roles = $user1->getRoleNames()->first();
$role = Role::findByName($roles,'api');
$user=json_decode(json_encode($user));
return response()->json([
'success' => true,
'token' => $token,
'data' => [
'user_id' => $user->id,
'name' => $user->name,
'email' => $user->email,
'employee_id' => $user->employee_id,
'role_id' => $role->id,
'role_name' => $role->name
],
'msg' => "Successfully"
], 200);
} else {
return response()->json(['error' => 'Unauthorised'], 401);
}
}
答案 0 :(得分:1)
尽管Laravel Passport
对大多数开发人员很有用,但由于如何验证(内部)(默认情况下)下的多个(用户)模型仍然是一个难题,因为它仅在users
表上显示。