Laravel API jwt token 的问题

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 17

@随风飘流的男人

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

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

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

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

4年前 评论

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

4年前 评论

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

4年前 评论

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

4年前 评论

绑定需要认证的模型

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

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

        'admin' => [
            'driver' => 'jwt',
            'provider' => 'admins',
        ],
    ],
4年前 评论

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

4年前 评论
  • 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]);
4年前 评论
andyzu (楼主) 4年前

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

4年前 评论

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

4年前 评论

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

4年前 评论
draven 4年前

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

4年前 评论
mirrorpen 4年前

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

4年前 评论
直面苦痛的人生

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

4年前 评论

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

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!