Lravel 5.4: JWT API with multi-auth on two tables one works the other not

后端 未结 3 592
闹比i
闹比i 2020-12-16 08:31

I am using...

  • Laravel 5.4
  • tymon/jwt-auth : 1.0.0-rc.2

I have application with two authentications API one is customers and

3条回答
  •  爱一瞬间的悲伤
    2020-12-16 08:31

    My example when i used multi auth with jwt

    I have 2 models : 1. users 2. admins

    the routes :

    Route::post('auth/userlogin', 'ApiController@userLogin');
    Route::post('auth/adminlogin', 'ApiController@adminLogin');
    

    the controller:

    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use App\Http\Controllers\Controller;
    use App\Http\Requests;
    use Config;
    use JWTAuth;
    use JWTAuthException;
    use App\User;
    use App\Admin;
    
    class ApiController extends Controller
    {
    
        public function __construct()
        {
            $this->user = new User;
            $this->admin = new Admin;
        }
    
        public function userLogin(Request $request){
            Config::set('jwt.user', 'App\User'); 
            Config::set('auth.providers.users.model', \App\User::class);
            $credentials = $request->only('email', 'password');
            $token = null;
            try {
                if (!$token = JWTAuth::attempt($credentials)) {
                    return response()->json([
                        'response' => 'error',
                        'message' => 'invalid_email_or_password',
                    ]);
                }
            } catch (JWTAuthException $e) {
                return response()->json([
                    'response' => 'error',
                    'message' => 'failed_to_create_token',
                ]);
            }
            return response()->json([
                'response' => 'success',
                'result' => [
                    'token' => $token,
                    'message' => 'I am front user',
                ],
            ]);
        }
    
        public function adminLogin(Request $request){
            Config::set('jwt.user', 'App\Admin'); 
            Config::set('auth.providers.users.model', \App\Admin::class);
            $credentials = $request->only('email', 'password');
            $token = null;
            try {
                if (!$token = JWTAuth::attempt($credentials)) {
                    return response()->json([
                        'response' => 'error',
                        'message' => 'invalid_email_or_password',
                    ]);
                }
            } catch (JWTAuthException $e) {
                return response()->json([
                    'response' => 'error',
                    'message' => 'failed_to_create_token',
                ]);
            }
            return response()->json([
                'response' => 'success',
                'result' => [
                    'token' => $token,
                    'message' => 'I am Admin user',
                ],
            ]);
        }
    }
    

    I hope that's help you .

提交回复
热议问题