Laravel API jwt token 的问题

请教各位,我使用了composer require tymon/jwt-auth 1.0.0-rc.1 ,我看了大量的教程,都使用了 User.php 的模型,进行验证用户的,如果我不用laravel 的 auth 验证体系,我如何自己生成token?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 17

生成一个用户$user之后
使用JWT Auth的JWTAuth::fromUser($user)来生成该用户的token

4个月前 评论
lyxxxh

每个user表加个token字段
用户登录成功之后:修改用户token为随机字符串 返回这个随机字符串给前端
前端每次发送请求带上token 每次都查询这个token是那个用户的

4个月前 评论
直面苦痛的人生

这种无状态的token,很容易被人盗用的,加https貌似也没有啥用!!欢迎讨论!!

4个月前 评论
lyxxxh

@随风飘流的男人

token盗用的话 我只想到前端
网络的传输盗用 难道他跑到别人家监听网络不成

前端的话 都是localStorage保存token
黑客localStorage.getItem获取到token ajax发送到他们服务器
但是cookie不也是不安全(存在本地的)?
我想不到 哪里不安全

4个月前 评论
直面苦痛的人生 4个月前
lyxxxh (作者) 4个月前
largezhou 4个月前
直面苦痛的人生 4个月前
tradzero 3个月前
woku5420 3个月前
lyxxxh

file
这是我获取用户身份的代码

4个月前 评论

@mirrorpen $user 是一个数组吧,里面应该是存储用户的一些验证过密码后的信息吧,比如 存放userid , 和 username 等,不知道我理解的对不?

4个月前 评论

@mirrorpen @lyxxxh @随风飘流的男人 等于token是否安全,我也比较迷茫,看了很多文章,其实也没把我在安全层级的担忧打消,可能我是菜鸟吧。
我的需求是 前端后端完全分离,所以我需要laravel提供API接口,然后前端有很多端,手机端,H5端,PC端,ipad端。我需要鉴权。所以想到用token。也欢迎各位能给我一个正确的思路!谢谢!

4个月前 评论
mirrorpen 3个月前

@lyxxxh 我是专门在一个 tokeninfo 表里,存储我需要公钥和私钥,第一次登录,登录验证成功,我将公钥发给前端,然后前端使用 localstroage 保存,然后每次请求,携带这个公钥。来调用接口,接口进行鉴权,如果OK ,就返回数据,如果不OK 就不返回数据。
不知道这样的思路对不?

4个月前 评论
draven 4个月前
lyxxxh

@andyzu
对的 我跟你的差不多
file
中间件查询这个token是谁的 查询到合并到$request对象 查询不到,没有这个token就返回失败

4个月前 评论

可以尝试查看一下源码,这个 SDK 生成 token 的方法有好几种。

3个月前 评论
  • User model 实现 Tymon\JWTAuth\Contracts\JWTSubject 接口

  • 修改 config/api.php

    'auth' => [
     'jwt' => 'Dingo\Api\Auth\Providers\JWT',
    ],
  • login 生成用户 token

    $token = Auth::guard('api')->attempt(['username' => $request->username, 'password' => $request->password]);
3个月前 评论
andyzu (楼主) 3个月前

@Liuzhipeng_laravel 这个是认证,我需要的是鉴权。

3个月前 评论

绑定需要认证的模型

   'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'jwt',
            'provider' => 'users',
        ],

        'admin' => [
            'driver' => 'jwt',
            'provider' => 'admins',
        ],
    ],
3个月前 评论

如果我不需要laravel 的认证,而是我自己手动认证。应该怎么做?@summer-1994

3个月前 评论

@andyzu 那你完全不需要用tymon/jwt-auth这个包,这个包核心是实现了laravel的Guard接口,把需要验证的模型主键id按一定的规则生成对应的token。你可以自己写一套加密token的规则,然后在中间件解密认证。 0.0 你非要用包生成token然后再自己验证,你可以在中间件 用 JWTAuth::parseToken()->getPayload()->get('sub') 获取加密模型的主键id,然后按需求验证

3个月前 评论

@summer-1994 感谢你!我明白了!

3个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!