介绍
今天就跟大家聊聊有关Laravel如何配合使用jwt方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
测试使用的是Laravel5.5版本。
<强>安装强>
作曲家要求tymon/jwt-auth=1.0.0-rc。5
<>强配置
强>
生成配置
php工匠供应商:供应商发布——=癟ymon \ JWTAuth \ \ LaravelServiceProvider"提供者; php工匠jwt:秘密
auth配置
& lt;及# 63;php 返回( … & # 39;违约# 39;=比;( & # 39;后卫# 39;=比;& # 39;网络# 39; & # 39;密码# 39;=比;& # 39;用户# 39; ), & # 39;警卫# 39;=比;( & # 39;网络# 39;=比;( & # 39;司机# 39;=比;& # 39;会话# 39; & # 39;提供者# 39;=比;& # 39;用户# 39; ),//使用jwt & # 39;api # 39;=比;( & # 39;司机# 39;=比;& # 39;jwt # 39; & # 39;提供者# 39;=比;& # 39;apiUser& # 39; ), ), & # 39;提供者# 39;=比;( …//指定模型 & # 39;apiUser& # 39;=比;( & # 39;司机# 39;=比;& # 39;雄辩的# 39; & # 39;模型# 39;=比;App \ ApiUser::类, ), ), ];
<强>编码强>
控制器:
& lt;及# 63;php 名称空间的应用程序控制器\ Http \ \ Api; 使用App \ ApiUser; 使用Http \控制器\ App \控制器; 使用说明\ Http \请求; 使用Tymon \ JWTAuth \外墙\ JWTAuth; 类AuthController扩展控制器 {/* * *中间件去除登录和刷新 * * @return无效 */公共函数__construct () { $ this→中间件(& # 39;身份验证:api # 39;,[& # 39;除了# 39;=比;[& # 39;登录# 39;& # 39;刷新# 39;]]); }/* * * JWT通过给定的凭证。 * * @return \ \ Http \ JsonResponse照亮 */公共函数登录请求(请求$) { 只凭据=请求→美元(& # 39;电话# 39;& # 39;密码# 39;); 如果(count($凭证)& lt;2){ 返回响应()→json([& # 39;错误# 39;=比;& # 39;未经授权# 39;],401); } $ user=ApiUser::(& # 39;电话# 39;,美元凭证(& # 39;电话# 39;]) →在哪里(& # 39;密码# 39;,md5($凭证(& # 39;密码# 39;))) →第(); 如果(空(用户)美元| | !令牌=JWTAuth:美元:fromUser(用户)美元){ 返回响应()→json([& # 39;错误# 39;=比;& # 39;未经授权# 39;],401); }//dd(令牌); 返回$ this→respondWithToken(令牌); }/* * *身份验证的用户。 * * @return \ \ Http \ JsonResponse照亮 */公共函数我() { 返回响应()→json(身份验证(& # 39;api # 39;)→用户()); }/* * *登录用户(令牌失效)。 * * @return \ \ Http \ JsonResponse照亮 */公共函数注销() { 身份验证()→注销(); 返回响应()→json([& # 39;消息# 39;=比;& # 39;成功登录本# 39;]); }/* * *刷新令牌。 * * @return \ \ Http \ JsonResponse照亮 */公共函数刷新() { 返回$ this→respondWithToken(身份验证(& # 39;api # 39;)→refresh ()); }/* * *标记数组结构。 * * @param字符串$令牌 * * @return \ \ Http \ JsonResponse照亮 */保护功能respondWithToken(令牌) { 返回响应()→json ([ & # 39;access_token& # 39;=比;美元的令牌, & # 39;token_type& # 39;=比;& # 39;无记名# 39; & # 39;expires_in& # 39;=比;身份验证(& # 39;api # 39;)→工厂()→getTTL () * 60 ]); } }
路由:
此处注意,我为了方便测试,使用了会方法,生产环境不建议使用。
///api.php路线 路线::中间件(& # 39;api # 39;)→前缀(& # 39;auth # 39;)→名称空间(& # 39;api # 39;)→集团(函数(){ 路线:get(& # 39;登录# 39;& # 39;AuthController@login& # 39;); 路线::post(& # 39;注销# 39;& # 39;AuthController@logout& # 39;); 路线:get(& # 39;刷新# 39;& # 39;AuthController@refresh& # 39;); 路线:get(& # 39;我# 39;& # 39;AuthController@me& # 39;); });
测试一下: