api php jwt,Laravel使用JWT实现API用户授权的详细步骤
本篇文章给大家带来的内容是关于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用户授权的详细步骤相关推荐
- php隐藏api,PHP 在 Laravel 中动态隐藏 API 字段
我最近在 Laravel Brasil 社区看到一个问题,结果比看起来更有趣.想象一下你有一个 UsersResource 用下面的实现: 1 <?php2 namespace App\Http ...
- php数据迁移脚本,Laravel中数据迁移与数据填充的详细步骤
前言 这是一篇基础教程,对标 Laravel 文档中的数据迁移和数据填充,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍把. 关于Laravel数据库迁移的理解 最初看到laravel框 ...
- 微信公众号发红包需要的API证书是什么,如何获取API证书?
原文地址:什么是API证书?如何获取API证书? 什么是API证书?如何获取API证书? 一.什么是API证书 1.技术开发人员在调用微信支付安全级别较高的接口(如:退款.企业红包.企业付款)时,会使 ...
- php dingo和jwt,Laravel实现dingo+JWT api接口之配置篇
尝试了下在简书写博客..结果一般如下: 废话不多说,直接进入----| 1. 安装拓展包 一.集成dingo ①在composer.json的require字段中添加:"dingo/api& ...
- oauth2和jwt_使用具有OAuth2的Web应用程序和JWT的使用来调用API – WSO2 API Manager
oauth2和jwt 在这篇文章中,我将分享我在WSO2 API管理器(API-M)中针对行业中非常常见且有用的场景的经验和理解. 简要地说明以下流程. 公开了一个API,供应用程序开发人员在API管 ...
- oracle access manager token,Laravel 自带的 API 守卫驱动 token 使用详解
在Laravel框架中,默认的用户认证守卫有两个,web和api,web守卫默认的驱动是session,而api守卫默认的驱动是token.那么,该如何使用这个token驱动? 寻找 TokenGua ...
- Laravel 使用 Passport 进行API认证
曾经使用过Dingo + JWT来做API系统,工作起来还好,就是配置比较麻烦.现在使用官方扩展包来尝试下. 首先安装 Laravel/Passport,这里不再重复,直接参考官方文档. https: ...
- 猿创征文|laravel中JWT的使用
一.什么是 JWT? JWT (JSON Web Token) 是目前最流行的跨域认证解决方案,是一种基于 Token 的认证授权机制. 从 JWT 的全称可以看出,JWT 本身也是 Token,一种 ...
- 设置响应主体格式php,Laravel如何实现适合Api的异常处理响应格式
前言 Laravel全局捕获异常后,会把异常转为相应的数据格式返回给用户.如果想要规定的数据格式相应,那我们只需重写异常捕获后的处理方法即可. 异常处理流程 Illuminate\Foundation ...
最新文章
- 多条记录取最前面一条或根据条件任取N条
- 大道至简,SQL也可以实现神经网络
- 腾讯云数据库Redis助力百万企业远程办公
- Hadoop精华问答 | NameNode的工作特点
- Spring-aop-简单示例
- 两种排序方法(直接判断)
- android如何查看cpu的占用率和内存泄漏
- Android中的控件
- mysql数据库文件怎么用_mysql数据库文件怎么用
- 汽车零部件开发工具巨头V公司全套bootloader中UDS协议栈源代码,自己完成底层外设驱动开发后,集成即可使用
- Word——如何统计除去标点符号的字数
- BIG5码转换为GB2312码的方法
- 文本去重Linux,Shell实现文本去重并操持原有顺序
- QoBean的元语言系统(一)
- 电脑字母下标数字怎么打java_下标小字母大全 一个字母的右下标怎么用电脑打...
- No matter what,just do not give up。
- 微信电子健康卡开放平台接口对接
- Win10极简fliqlo时钟屏保(附下载链和安装教程)
- 《那些年啊,那些事——一个程序员的奋斗史》——100
- 数据挖掘_task2数据探索分析
热门文章
- 加快ALTER TABLE 操作速度
- WinForm LED循环显示信息,使用定时器Threading.Timer
- [转]SQL事务回滚的问题及其解决的方法
- Java面向对象程序设计--与C++对比说明:系列2(类机制)
- 吴裕雄--天生自然 高等数学学习:空间直角坐标系
- 【转】C#、面向对象、设计模式学习
- dapper 多对多查询对象和对象列表
- NetCore 2.0 + Swagger 的WebAPI 模板例子
- unity游戏教程 space shooter (游戏控制器)
- Ogre学习笔记Basic Tutorial 前四课总结