本篇文章给大家带来的内容是关于Laravel使用JWT实现API用户授权的详细步骤,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

第一部分 安装JWT

第一步. 使用Composer安装 tymon/jwt-auth :

`composer require tymon/jwt-auth 1.0.0-rc.3

第二步. 添加服务提供商(Laravel5.4及以下版本,5.5及以上版本无需添加),

将下面这行添加至 config/app.php 文件 providers 数组中:<?php

// 文件:app.php

'providers' => [

// other code

Tymon\JWTAuth\Providers\LaravelServiceProvider::class,

]

第三步. 发布配置文件,

运行如下命令发布 jwt-auth 的配置文件:

php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"

第四步. 生成密钥,

此命令会在你的 .env 文件中新增一行 JWT_SECRET=secret。

php artisan jwt:secret

第二部分 开始配置

第五步. 配置 Auth guard,`

在 config/auth.php 文件中,你需要将 guards/driver 更新为 jwt,

只有在使用 Laravel 5.2 及以上版本的情况下才能使用。<?php

'defaults' => [

'guard' => 'api',

'passwords' => 'users',

],

// other code

'guards' => [

'api' => [

'driver' => 'jwt',

'provider' => 'users',

],

],

第六步. 更改 User Model,

在User Model上实现TymonJWTAuthContractsJWTSubject接口,

实现getJWTIdentifier() and getJWTCustomClaims()两个方法。<?php

namespace App;

use Tymon\JWTAuth\Contracts\JWTSubject;

class User extends Authenticatable implements JWTSubject

{

// other code

// Rest omitted for brevity

/**

* Get the identifier that will be stored in the subject claim of the JWT.

*

* @return mixed

*/

public function getJWTIdentifier()

{

return $this->getKey();

}

/**

* Return a key value array, containing any custom claims to be added to the JWT.

*

* @return array

*/

public function getJWTCustomClaims()

{

return [];

}

}

第三部分 快速创建DEMO测试

第七步. 添加一些基本身份验证路由:<?php

Route::group([

'middleware' => 'api',

'prefix' => 'auth'

], function ($router) {

Route::post('login', 'AuthController@login');

Route::post('register', 'AuthController@register');

Route::post('logout', 'AuthController@logout');

Route::post('refresh', 'AuthController@refresh');

Route::post('me', 'AuthController@me');

});第八步. 创建AuthController控制器 => php artisan make:controller AuthController:<?php

namespace App\Http\Controllers;

use App\User;

use Illuminate\Http\Request;

use Illuminate\Support\Facades\Validator;

class AuthController extends Controller

{

/**

* Create a new AuthController instance.

*

* @return void

*/

public function __construct()

{

$this->middleware('auth:api', ['except' => ['login', 'register']]);

}

/**

* 用户使用邮箱密码获取JWT Token.

*

* @return \Illuminate\Http\JsonResponse

*/

public function login()

{

$credentials = request(['email', 'password']);

if (! $token = auth()->attempt($credentials)) {

return response()->json(['error' => 'Unauthorized'], 401);

}

return $this->respondWithToken($token);

}

/**

* 注册新用户

*/

public function register(Request $request)

{

// 数据校验

// 数据验证

$validator = Validator::make($request->all(), [

'name' => 'required',

'email' => 'required|email',

'password' => 'required',

'c_password' => 'required|same:password'

]);

if ($validator->fails()) {

return response()->json(['error'=>$validator->errors()], 401);

}

// 读取参数并保存数据

$input = $request->all();

$input['password'] = bcrypt($input['password']);

$user = User::create($input);

// 创建Token并返回

return $user;

}

/**

* 获取经过身份验证的用户.

*

* @return \Illuminate\Http\JsonResponse

*/

public function me()

{

return response()->json(auth()->user());

}

/**

* 刷新Token.

*

* @return \Illuminate\Http\JsonResponse

*/

public function refresh()

{

return $this->respondWithToken(auth()->refresh());

}

/**

* Get the token array structure.

*

* @param string $token

*

* @return \Illuminate\Http\JsonResponse

*/

protected function respondWithToken($token)

{

return response()->json([

'access_token' => $token,

'token_type' => 'bearer',

'expires_in' => auth()->factory()->getTTL() * 60

]);

}

}

第九步. 使用Postman测试API:

测试API数据获取,需要在headers中添加Token; 格式

key=Authorization,value=Bearer空格token

Token刷新:

api php jwt,Laravel使用JWT实现API用户授权的详细步骤相关推荐

  1. php隐藏api,PHP 在 Laravel 中动态隐藏 API 字段

    我最近在 Laravel Brasil 社区看到一个问题,结果比看起来更有趣.想象一下你有一个 UsersResource 用下面的实现: 1 <?php2 namespace App\Http ...

  2. php数据迁移脚本,Laravel中数据迁移与数据填充的详细步骤

    前言 这是一篇基础教程,对标 Laravel 文档中的数据迁移和数据填充,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍把. 关于Laravel数据库迁移的理解 最初看到laravel框 ...

  3. 微信公众号发红包需要的API证书是什么,如何获取API证书?

    原文地址:什么是API证书?如何获取API证书? 什么是API证书?如何获取API证书? 一.什么是API证书 1.技术开发人员在调用微信支付安全级别较高的接口(如:退款.企业红包.企业付款)时,会使 ...

  4. php dingo和jwt,Laravel实现dingo+JWT api接口之配置篇

    尝试了下在简书写博客..结果一般如下: 废话不多说,直接进入----| 1. 安装拓展包 一.集成dingo ①在composer.json的require字段中添加:"dingo/api& ...

  5. oauth2和jwt_使用具有OAuth2的Web应用程序和JWT的使用来调用API – WSO2 API Manager

    oauth2和jwt 在这篇文章中,我将分享我在WSO2 API管理器(API-M)中针对行业中非常常见且有用的场景的经验和理解. 简要地说明以下流程. 公开了一个API,供应用程序开发人员在API管 ...

  6. oracle access manager token,Laravel 自带的 API 守卫驱动 token 使用详解

    在Laravel框架中,默认的用户认证守卫有两个,web和api,web守卫默认的驱动是session,而api守卫默认的驱动是token.那么,该如何使用这个token驱动? 寻找 TokenGua ...

  7. Laravel 使用 Passport 进行API认证

    曾经使用过Dingo + JWT来做API系统,工作起来还好,就是配置比较麻烦.现在使用官方扩展包来尝试下. 首先安装 Laravel/Passport,这里不再重复,直接参考官方文档. https: ...

  8. 猿创征文|laravel中JWT的使用

    一.什么是 JWT? JWT (JSON Web Token) 是目前最流行的跨域认证解决方案,是一种基于 Token 的认证授权机制. 从 JWT 的全称可以看出,JWT 本身也是 Token,一种 ...

  9. 设置响应主体格式php,Laravel如何实现适合Api的异常处理响应格式

    前言 Laravel全局捕获异常后,会把异常转为相应的数据格式返回给用户.如果想要规定的数据格式相应,那我们只需重写异常捕获后的处理方法即可. 异常处理流程 Illuminate\Foundation ...

最新文章

  1. 多条记录取最前面一条或根据条件任取N条
  2. 大道至简,SQL也可以实现神经网络
  3. 腾讯云数据库Redis助力百万企业远程办公
  4. Hadoop精华问答 | NameNode的工作特点
  5. Spring-aop-简单示例
  6. 两种排序方法(直接判断)
  7. android如何查看cpu的占用率和内存泄漏
  8. Android中的控件
  9. mysql数据库文件怎么用_mysql数据库文件怎么用
  10. 汽车零部件开发工具巨头V公司全套bootloader中UDS协议栈源代码,自己完成底层外设驱动开发后,集成即可使用
  11. Word——如何统计除去标点符号的字数
  12. BIG5码转换为GB2312码的方法
  13. 文本去重Linux,Shell实现文本去重并操持原有顺序
  14. QoBean的元语言系统(一)
  15. 电脑字母下标数字怎么打java_下标小字母大全 一个字母的右下标怎么用电脑打...
  16. No matter what,just do not give up。
  17. 微信电子健康卡开放平台接口对接
  18. Win10极简fliqlo时钟屏保(附下载链和安装教程)
  19. 《那些年啊,那些事——一个程序员的奋斗史》——100
  20. 数据挖掘_task2数据探索分析

热门文章

  1. 加快ALTER TABLE 操作速度
  2. WinForm LED循环显示信息,使用定时器Threading.Timer
  3. [转]SQL事务回滚的问题及其解决的方法
  4. Java面向对象程序设计--与C++对比说明:系列2(类机制)
  5. 吴裕雄--天生自然 高等数学学习:空间直角坐标系
  6. 【转】C#、面向对象、设计模式学习
  7. dapper 多对多查询对象和对象列表
  8. NetCore 2.0 + Swagger 的WebAPI 模板例子
  9. unity游戏教程 space shooter (游戏控制器)
  10. Ogre学习笔记Basic Tutorial 前四课总结