2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Laravel使用JWT实现API用户授权的详细步骤

Laravel使用JWT实现API用户授权的详细步骤

时间:2022-05-09 21:23:05

相关推荐

Laravel使用JWT实现API用户授权的详细步骤

php框架|Laravel

php

php框架-Laravel

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

人生日历源码,vscode默认预览md,ubuntu蓝牙联网,tomcat图片映射,js访问sqlite3速度,爬虫遇到的问题及其解决办法,php 浏览器语言,上海seo培训哪家好,网站模板内容怎么添加图片不显示,手机模板网站制作lzw

第一部分 安装JWT

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

支付宝收款码合并源码,vscode打开网页报错,ubuntu选地区,支持tomcat的主机,网上爬虫搜索,php 数组sum,宁波seo在线优化哪家好,卖车系统网站源码,仿拼多多母婴商城手机网站模板下载lzw

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

企业级项目源码,如何改vscode图标,ubuntu 可玩性,项目不能加到tomcat,sqlite多节点数据同步,马上生产的孕妇梦见身上爬虫子,腾讯 php 招聘,济南论坛营销seo推广,网站图片生存代码大全,字体模板素材免费下载网站lzw

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

将下面这行添加至 config/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 及以上版本的情况下才能使用。

[ guard => api, passwords => users,],// other codeguards => [ api => [ driver => jwt, provider => users, ],],

第六步.更改 User Model,

在User Model上实现TymonJWTAuthContractsJWTSubject接口,

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

getKey(); } /*** Return a key value array, containing any custom claims to be added to the JWT.** @return array*/ public function getJWTCustomClaims() { return []; }}

第三部分 快速创建DEMO测试

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

api, prefix => auth], function ($router) { Route::post(login, AuthController@login); Route::post( egister, AuthController@register); Route::post(logout, AuthController@logout); Route::post( efresh, AuthController@refresh); Route::post(me, AuthController@me);});

middleware(auth:api, [except => [login, egister]]); } /*** 用户使用邮箱密码获取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(), [ ame => equired, email=> equired|email, password => equired, c_password => equired|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, oken_type => earer, expires_in => auth()->factory()->getTTL() * 60 ]); }}

第九步. 使用Postman测试API:

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

key=Authorization,value=Bearer空格token

Token刷新:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。