代码之家  ›  专栏  ›  技术社区  ›  Suroor Ahmmad

Laravel Passport不生成代币

  •  0
  • Suroor Ahmmad  · 技术社区  · 7 年前

    我使用Laravel作为我的ionic应用程序的后端,使用LaravelPassport进行身份验证。当我试着打电话的时候 createToken() Auth 它表明, Call to undefined method

    登录.ts :

    login(event){
            let dataJSON;
            let formData = new FormData();
            formData.append('email',event.target[0].value)
            formData.append('password',event.target[1].value)
            this.http.post(ENV.BASE_URL+'/auth', formData)
            .subscribe((data) => {
                console.log(data);
    
                dataJSON = data;
            }, (error) => {
                console.log("Error!", error);
            });
            return false;
        }
    

    用户控制器.php :

    namespace App\Http\Controllers;
    use Illuminate\Support\Facades\Auth;
    use Illuminate\Http\Request;
    use Carbon\Carbon;
    use App\User;
    
    class UserController extends Controller{
        public function auth(Request $request){
            $params = $request->only('email', 'password');
            $username = $params['email'];
            $password = $params['password'];
            if(\Auth::attempt(['email' => $username, 'password' => $password])){
                $token = \Auth::user()->createToken('Token'); //Throws Error here
                return response()->json(['token'=>$token]);
            }
            return response()->json(['error' => 'Invalid username or Password']);
        }
    }
    

    错误日志 : 当我使用Postman进行测试时,它抛出以下错误

    Symfony\Component\Debug\Exception\FatalThrowableError: Call to undefined method Illuminate\Auth\GenericUser::createToken() in file D:\PsResources\DroidWorkspace\ZiPay\ZipServer\app\Http\Controllers\UserController.php on line 16 Stack trace: 1. Symfony\Component\Debug\Exception\FatalThrowableError->() D:\PsResources\DroidWorkspace\ZiPay\ZipServer\app\Http\Controllers\UserController.php:16

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
            'table' => 'users',
        ],
        'users' => [
            'driver' => 'database',
            'table' => 'users',
         ],
    ],
    

    namespace App;
    use Laravel\Passport\HasApiTokens;
    use Illuminate\Notifications\Notifiable;
    use Illuminate\Contracts\Auth\MustVerifyEmail;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    
    class User extends Authenticatable{
        use HasApiTokens, Notifiable;
        ....
    }
    
    3 回复  |  直到 7 年前
        1
  •  1
  •   GabrieleMartini    7 年前


    use Laravel\Passport\HasApiTokens;
    use Illuminate\Notifications\Notifiable;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    
    class User extends Authenticatable
    {
        use Notifiable, HasApiTokens
    
        2
  •  0
  •   Amir    7 年前

    试试这个

    \Auth::user()->createToken('Token')->accessToken;
    

    更新:

    1. 是否在app.php providers数组中添加了“Laravel\Passport\PassportServiceProvider::class”?
    2. 是否更改了api->guards数组中auth.php中“passport”的驱动程序?

    Config/App.php

    Config/Auth.php

        3
  •  0
  •   Suroor Ahmmad    7 年前

    这是奇怪的,我删除了整个项目,并开始新的一个,一切正常。

    推荐文章