Laravel-lumen 配置JWT
具体步骤参照: [ JWT & Lumen ]
第一步
在项目根目录 执行命令
composer require tymon/jwt-auth
第二步
在 bootstrap/app.php 的 Register Service Providers 部分添加注册
$app->register('Tymon\JWTAuth\Providers\JWTAuthServiceProvider');
//建议 改成这样
$app->register(Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class);
第三步
3.1 在 app 目录下创建 helper.php 文件 并写入以下代码
<?php
if ( ! function_exists('config_path'))
{
/**
* Get the configuration path.
*
* @param string $path
* @return string
*/
function config_path($path = '')
{
return app()->basePath() . '/config' . ($path ? '/' . $path : $path);
}
}
?>
3.2 在根目录 composer.json 文件内 “autoload” 部分 添加自动加载 helper.php
"files": [
"src/helpers.php"
]
3.3 运行
composer dump-autoload
第四步
注意: 如果不执行第四步,直接执行第五步,会报错:
“There are no commands defined in the “vendor” namespace. ”
所以要先引入 原文作者 写好的一个包 :
[vendorPublishCommand]
包文件内容:
执行
composer require laravelista/lumen-vendor-publish
在app/Console/Kernel.php中添加:
protected $commands = [
\Laravelista\LumenVendorPublish\VendorPublishCommand::class
];
也可以直接访问上面的地址,把代码挡下来, 放到 vendor/basicit/lumen-vendor-publish 目录下,
basicit/lumen-vendor-publish 目录需要自己手动创建
这样就不用执行 下面的命令了, 由于国内被墙, 执行命令会很慢!
4.1 运行 composer require basicit/lumen-vendor-publish 命令(时间很长)
4.2 在 app/Console/Kernel.php 文件内 添加
protected $commands = [
'BasicIT\LumenVendorPublish\VendorPublishCommand'
];
第五步
运行
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
第六步
去 bootstrap/app.php 内, 找到 $app->withFacades(); 并去掉注释,在下面写上
$app->configure('jwt');
class_alias('Tymon\JWTAuth\Facades\JWTAuth', 'JWTAuth');
class_alias('Tymon\JWTAuth\Facades\JWTFactory', 'JWTFactory');
第七步
项目根目录执行 生成JWT密钥
项目根目录运行
php artisan jwt:generate
执行完了之后,会在 config/jwt.php 文件里自动配置好 秘钥
'secret' => env('JWT_SECRET', '4N49NxgrULTbBdG0OTZ6K60bxr1RIl'),
这个秘钥也可以移动到 .env文件里,如下
# JWT
JWT_SECRET=4N49NxgrULTbBdG0OTZ6K60bxr1RIl
注意: 如果使用 postman 测试 接口,在使用 PUT 等协议方法的情况下, 使用 x-www-form-urlencoded 发送数据, 不要使用默认的 form-data格式的数据
第八步
在某些情况下,可能某些接口,需要token 验证,某些则不需要 就需要去 bootstrap/app.php 里面
找到 “Register Middleware” 部分,去掉 “routeMiddleware” 注释
并添加代码后是这样:
$app->routeMiddleware([
'jwt.auth' => Tymon\JWTAuth\Middleware\GetUserFromToken::class,
'jwt.refresh' => Tymon\JWTAuth\Middleware\RefreshToken::class,
]);
然后你就可以去 你的路由里面 这样写了,表示在请求这个路由的时候,会首先进行JWT验证
$app->group(['prefix' => 'projects', 'middleware' => 'jwt.auth'], function($app) {
$api->get('auth/show', [
'as' => 'auth.show',
'uses' => 'AuthController@show'
]);
});
如果你用的是Dingo API 的话,就这样写
$api->version('v1', ['namespace' => 'App\Http\Controllers\Api\V1'], function ($api) {
// 需要jwt验证后才能使用的API 也就是登陆之后,才能访问的路由,比如用户详细
$api->group(['middleware' => 'jwt.auth'], function ($api) {
#Auth
$api->get('auth/show', [
'as' => 'auth.show',
'uses' => 'AuthController@show'
]);
});
});
第九步
把 /vendor/laravel/lumen-framework/config/auth.php 复制 到 根目录下的 config 目录下,
并且 修改
'model' => env('AUTH_MODEL', 'App\User'),
为
'model' => env('AUTH_MODEL', 'App\Models\User'),
如果出现 App\User not found 说明没有定义 User 的 model, JWT 最终还是去调用的 Laravel的 auth,他会去实例化 UserModel
如果以上步骤都正确, 就可以写个登陆方法进行测试了.
Laravel-lumen 配置JWT的更多相关文章
- laravel(lumen)配置读写分离后,强制读主(写)库数据库,解决主从延迟问题
在Model里面加上下面这句,强制读主(写)库数据库,解决主从延迟问题. public static function boot() { //清空从连接,会自动使用主连接 DB::connection ...
- phpstorm laravel单元测试 配置
laravel中集成了单元测试工具phpunit可以在项目的根目录下进行使用,命令是:phpunti ./tests/单元测试文件名称.在phpstorm中使用phpunit需要做一些配置,指定com ...
- Laravel 中使用 JWT 认证的 Restful API
Laravel 中使用 JWT 认证的 Restful API 5天前/ 678 / 3 / 更新于 3天前 在此文章中,我们将学习如何使用 JWT 身份验证在 Laravel 中构建 r ...
- LaravelS - 基于Swoole加速Laravel/Lumen
LaravelS LaravelS是一个胶水项目,用于快速集成Swoole到Laravel或Lumen,然后赋予它们更好的性能.更多可能性.Github 特性 内置Http/WebSocket服务器 ...
- laravel/lumen 的构造函数需要注意的地方
比如 lumen,ConsoleServiceProvider 里面的 register 做了下面的处理: \Laravel\Lumen\Console\ConsoleServiceProvider: ...
- laravel数据库配置
1.说明,查看laravel数据库配置 项目名/config/database.php 'default' => env('DB_CONNECTION', 'mysql') 2.数据开发 ...
- 解决 Laravel/Lumen 出现 "Please provide a valid cache path" 问题
解决 Laravel/Lumen 出现 "Please provide a valid cache path" 问题 解决 Laravel/Lumen 出现 "Pleas ...
- laravel 框架配置404等异常页面的方法详解(代码示例)
本篇文章给大家带来的内容是关于laravel 框架配置404等异常页面的方法详解(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在Laravel中所有的异常都由Handl ...
- laravel Lumen邮箱发送配置
Lumen 中配置邮件 https://blog.csdn.net/glovenone/article/details/54344013 Lareval 比 Lumen 多了一个步骤 https:// ...
- nginx配置laravel lumen重写
location / { try_files $uri $uri/ /index.php?$query_string;}
随机推荐
- C++ std::map
std::map template < class Key, // map::key_type class T, // map::mapped_type class Compare = less ...
- Atitit. 破解 拦截 绕过 网站 手机 短信 验证码 方式 v2 attilax 总结
Atitit. 破解 拦截 绕过 网站 手机 短信 验证码 方式 v2 attilax 总结 1. 验证码的前世今生11.1. 第一代验证码 图片验证码11.2. 第二代验证码 用户操作 ,比如 ...
- Oracle数据库自动备份SQL文本:Procedure存储过程,View视图,Function函数,Trigger触发器,Sequence序列号等
功能:备份存储过程,视图,函数触发器,Sequence序列号等准备工作:--1.创建文件夹 :'E:/OracleBackUp/ProcBack';--文本存放的路径--2.执行:create or ...
- mongoose - 让node.js高效操作mongodb
Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...
- 【原】SDWebImage源码阅读(二)
[原]SDWebImage源码阅读(二) 本文转载请注明出处 —— polobymulberry-博客园 1. 解决上一篇遗留的坑 上一篇中对sd_setImageWithURL函数简单分析了一下,还 ...
- Ajax 提交KindEditor的数据
这次我是在EasyUI中使用了KindEditor的编辑器,按照官方给的代码,总是无法获取编辑器里面的值(内容),如下: KindEditor.ready(function (K) { ...
- Oracle PL/SQL随堂笔记总结
1.pl/sql编程 2.存储过程 3.函数 4.触发器 5.包 6.pl/sql基础 -定义并使用变量 7.pl/sql的进阶 8.oracle的视图 1.pl/sql编程 1.理解oracle的p ...
- 基于HTML5实现3D监控应用流动效果
http://www.hightopo.com/guide/guide/core/lighting/examples/example_flowing.html 流动效果在3D领域有着广泛的应用场景,如 ...
- Javascript中关于cookie的那些事儿
Javascript-cookie 什么是cookie? 指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密).简单点来说就是:浏览器缓存. cookie由什 ...
- 基于trie树做一个ac自动机
基于trie树做一个ac自动机 #!/usr/bin/python # -*- coding: utf-8 -*- class Node: def __init__(self): self.value ...