本篇文章给大家带来的内容是关于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 数组中:
[ // other code TymonJWTAuthProvidersLaravelServiceProvider::class,]
第三步. 发布配置文件,
运行如下命令发布 jwt-auth 的配置文件:
php artisan vendor:publish –provider=”TymonJWTAuthProvidersLaravelServiceProvider”
第四步. 生成密钥,
此命令会在你的 .env 文件中新增一行 JWT_SECRET=secret。
php artisan jwt:secret
第二部分 开始配置
第五步. 配置 Auth guard,`
在 config/auth.php 文件中,你需要将 guards/driver 更新为 jwt,
只有在使用 Laravel 5.2 及以上版本的情况下才能使用。
[ 'guard' => 'api', 'passwords' => 'users',],// other code'guards' => [ 'api' => [ 'driver' => 'jwt', 'provider' => 'users', ],],
第六步. 更改 User Model,
在User Model上实现TymonJWTAuthContractsJWTSubject接口,
实现getJWTIdentifier() and getJWTCustomClaims()两个方法。
AppMall应用商店
AI应用商店,提供即时交付、按需付费的人工智能应用服务
56 查看详情
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('register', 'AuthController@register'); Route::post('logout', 'AuthController@logout'); Route::post('refresh', 'AuthController@refresh'); Route::post('me', 'AuthController@me');});
第八步. 创建AuthController控制器 => php artisan make:controller AuthController:
middleware('auth:api', ['except' => ['login', 'register']]); } /** * 用户使用邮箱密码获取JWT Token. * * @return IlluminateHttpJsonResponse */ 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 IlluminateHttpJsonResponse */ public function me() { return response()->json(auth()->user()); } /** * 刷新Token. * * @return IlluminateHttpJsonResponse */ public function refresh() { return $this->respondWithToken(auth()->refresh()); } /** * Get the token array structure. * * @param string $token * * @return IlluminateHttpJsonResponse */ 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刷新:

以上就是Laravel使用JWT实现API用户授权的详细步骤的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/367187.html
微信扫一扫
支付宝扫一扫