引入Dingo API和JWT
打赏作者

xiao

为什么不用Dingo自带的OAuth谁?

JellyBool

还没讲到。。。打算一步一步来的 @xiao

xiao

@JellyBool 是这一系统吧?正需要这一部分

JellyBool

对,就是这个系列。。。 @xiao

chenxin

tymondesigns/jwt-auth这个compose update安装不了!

chenxin

终端下面zsh: no matches found: 0.5.*

chenxin
Your requirements could not be resolved to an installable set of packages.
Installation failed, reverting ./composer.json to its original content.

安装jwt的时候出现错误提示

JellyBool 回复 chenxin

应该是对你的 laravel 版本来说, tymondesigns/jwt-auth 还没有适配吧

chenxin 回复 JellyBool

你录这个视屏的时候用的是哪个版本的laravel

JellyBool 回复 chenxin

laravel 5.1 ,没记错的话。

baoniu

视频无法加载了

假如_丶
return $this->item($lesson,new LessonTransformer());

仅显示datajson数据
如何显示其他的比如

return [
            'data' => $lessons,
            'info' => '提示信息',
            'status' => 1
        ];
JellyBool 回复 假如_丶

你要这样?

$lessons = $this->item($lesson,new LessonTransformer());
return [
            'data' => $lessons,
            'info' => '提示信息',
            'status' => 1
        ];

还是什么?

假如_丶 回复 JellyBool

基本是这个意思,但是请看代码…

{
  "data": {   // 这个想直接输出数据,而不是有exception,original,headers
    "exception": null,
    "original": {
      "id": 1,
      "title": "Voluptate beatae beatae est quia doloribus quia consequatur.",
      "body": "Est quidem non veniam error atque quod. Quia voluptate placeat labore molestiae harum veritatis adipisci possimus. Nobis aspernatur cum expedita non.",
      "free": 0,
      "created_at": "2017-03-01 15:41:24",
      "updated_at": "2017-03-01 15:41:24"
    },
    "headers": {
      
    }
  },
  "info": "提示信息",
  "status": 1
}

尝试使用setMeta但是不满足…就是data,info,status他们同级

JellyBool 回复 假如_丶

下面这个出来什么?

$lessons = $this->item($lesson,new LessonTransformer());

return $lessons->original;
假如_丶 回复 JellyBool

我有点崇拜你了…

JellyBool 回复 假如_丶

这是你要的结果么?

假如_丶 回复 JellyBool

=。= 还是差一点…

$lessons = $this->item($lesson,new LessonTransformer());

$data = $lessons->original;

return [
     'data' =>$data,
     'info' => 'message',
     'status'=>1
];

结果是同级了,但是输出的时候LessonTransformer()就起不到做用了…
其他的字段都出来,也没有转换…

"id": 1,
        "title": "Voluptate beatae beatae est quia doloribus quia consequatur.",
        "body": "Est quidem non veniam error atque quod. Quia voluptate placeat labore molestiae harum veritatis adipisci possimus. Nobis aspernatur cum expedita non.",
        "free": 0,
        "created_at": "2017-03-01 15:41:24",
        "updated_at": "2017-03-01 15:41:24"

是这个而不是

 'title' => $lessons['title'],
            'content' => $lessons['body'],
            'is_free' => (boolean) $lessons['free']
假如_丶 回复 JellyBool

我把 LessonTransformer修改下

return [
            'data' => [
                'title' => $lessons['title'],
                'content' => $lessons['body'],
                'is_free' => (boolean) $lessons['free']
            ],
            'info' => 'message',
            'status' => 1
        ];

结果

"data": {
    "data": {
      "title": "Voluptate beatae beatae est quia doloribus quia consequatur.",
      "content": "Est quidem non veniam error atque quod. Quia voluptate placeat labore molestiae harum veritatis adipisci possimus. Nobis aspernatur cum expedita non.",
      "is_free": false
    },
    "info": "message",
    "status": 1
  }

感觉不是那么舒服…有什么好的方法吗。。。

假如_丶

话说这个系列的视频可否在加一个,比如PC端用dingo接口来登录……

JellyBool 回复 假如_丶

这个要做前后端分离?

假如_丶 回复 JellyBool

是的……要不感觉这期总是少点啥……

lg23

群主 “tymon/jwt-auth”: “1.0.0-beta.2” 这个版本同你所讲的版本有什么区别

lg23

Your requirements could not be resolved to an installable set of packages.

Problem 1
- Conclusion: don’t install tymon/jwt-auth 0.5.10
- Conclusion: don’t install tymon/jwt-auth 0.5.9
- Conclusion: don’t install tymon/jwt-auth 0.5.8
- Conclusion: don’t install tymon/jwt-auth 0.5.7
- Conclusion: don’t install tymon/jwt-auth 0.5.6
- Conclusion: don’t install tymon/jwt-auth 0.5.5
- Conclusion: don’t install tymon/jwt-auth 0.5.4
- Conclusion: don’t install tymon/jwt-auth 0.5.3
- Conclusion: don’t install tymon/jwt-auth 0.5.2
- Conclusion: don’t install tymon/jwt-auth 0.5.1
- Conclusion: remove namshi/jose 7.2.3
- Installation request for tymon/jwt-auth 0.5.* -> satisfiable by tymon/jwt-auth[0.5.0, 0.5.1, 0.5.10, 0.5.2, 0.5.3, 0.5.4, 0.5.5, 0.5.6, 0.5.7, 0.5.8, 0.5.9].
- Conclusion: don’t install namshi/jose 7.2.3
- tymon/jwt-auth 0.5.0 requires namshi/jose 2.0.* -> satisfiable by namshi/jose[2.0.0, 2.0.1, 2.0.2, 2.0.3].
- Can only install one of: namshi/jose[2.0.0, 7.2.3].
- Can only install one of: namshi/jose[2.0.1, 7.2.3].
- Can only install one of: namshi/jose[2.0.2, 7.2.3].
- Can only install one of: namshi/jose[2.0.3, 7.2.3].
- Installation request for namshi/jose (locked at 7.2.3) -> satisfiable by namshi/jose[7.2.3].

Installation failed, reverting ./composer.json to its original content.

这种问题,不知道是什么引起的?

JellyBool 回复 lg23

就是版本没对应吧。你的 laravel 版本是什么?

以后发这种问题的时候,先把你的 laravel 版本和 php 版本,以及使用的环境先说明。

lg23 回复 JellyBool

问题解决了,是我换JWT版本引起 的。需要更新composer 后再安装JWT

duo

分页

// 返回Array
$user = User::findOrFail($id);
return $this->response->array($user->toArray());

// 返回 Single Item
$user = User::findOrFail($id);
return $this->response->item($user, new UserTransformer);

// 返回 A Collection Of Items
$users = User::all();
return $this->response->collection($users, new UserTransformer);

// 返回 Paginated Items
// 说明:分页结构在 body 里的meta元素里
$users = User::paginate(25);
return $this->response->paginator($users, new UserTransformer);

// 返回 No Content
return $this->response->noContent();


// 返回 Created Response
// 说明:可以用在返回token的时候,内容塞在 header里
return $this->response->created();

zhouyu

我按照步骤安装了jwt,但最后在 app\Http\kernel.php 中配置 protect $routeMiddleware的jwt.auth和jwt.refresh的时候找不到Middleware啊,就是GetUserFromToken和RefreshTokern找不到。

另:我申请加595928952群(我是会员),多久能如去啊?

JellyBool 回复 zhouyu

你安装的 jwt 是视频中的么?

或者你也可以看一下这个 https://github.com/tymondesigns/jwt-auth

新版可能是有些配置不一样

zhouyu

我的环境:
PHP 7.2.3
laravel 5.6

zhouyu

我在安装jwt的dev版本的时候按照网上一篇博客的教程配的,而且当时provider里配的内容是…laravel.(具体记不清了)…::class ,那是候是 php artisan secret 命令,

现在我安装jwt-auth:0.0.12 , provider里配的是Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class, 现在是 php artisan generate

现在Middleware也找到了.

php artisan generate也执行成功了。

感谢 @JellyBool

你这句话让我找到了问题根源。

也谢谢与我对话过的各位朋友,

你们的回复让我觉得不是我一个人在解决这样的棘手问题,

心里暖暖的。

谢谢了,大伙儿.

这个laravel社区:www.codecasts.com, 这个laravel技术qq群:595928952, 真的真的好给力啊! 太棒了!

zhouyu

现在我的环境是: PHP 7.2.3 laravel 5.6 jwt-auth 0.5.12,
上面的jwt-auth:0.0.12是输入错误。

Flourishing

如果前面的步骤全部成功 到了生成秘钥的时候 报错 可以考虑以下解决方案 : vendor / tymon / src / Commands中的JWTGenerateCommand.php文件并粘贴此方法

      public function handle()
    {
        $this->fire();
    }
Jarvis5780

谁有遇到过吗,,网上也有好多人遇到这个问题,,没找到解决方法。。
Target [Dingo\Api\Contract\Routing\Adapter] is not instantiable while building [Dingo\Api\Routing\Router].