網站首頁 編程語言 正文
- 一般對外提供api接口服務都需要對使用的身份進行鑒權,需要對權限方面進行控制
- 這里我們使用JWTAuth來進行完成
配置JWTAuth
-
這里使用的laravel為5.4版本,根據下面的JWTAuth拓展包使用范圍我們使用0.5版本
安裝拓展包
composer require tymon/jwt-auth 0.5.*
打開confi/app.php進行配置
在providers
中配置
\Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class,
在aliases
配置
‘JWTAuth’=> Tymon\JWTAuth\Facades\JWTAuth::class,
‘JWTFactory’=> Tymon\JWTAuth\Facades\JWTFactory::class,
生成配置文件config/jwt.php,文件中可以進行配置
php artisan vendor:publish --provider=“Tymon\JWTAuth\Providers\JWTAuthServiceProvider”
生成隨機密匙
php artisan jwt:generate
Laravel version | jwt-auth version |
---|---|
4.* | 0.3.* 0.4.* |
5.*&& <5.5 | 0.5.* |
5.* | 1.0.* |
默認使用
- 在
api
路由文件中寫上生成密匙路由,模擬用戶登錄使用接口,使用的用戶表為默認的user
表
Route::post(‘apiauth’,‘ApiController@auth’);
Route::get(‘getauth’,‘ApiController@getAuth’);
文件ApiController.php
<?php
namespace App\Http\Controllers\Admin\api;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Tymon\JWTAuth\Exceptions\JWTException;
use Tymon\JWTAuth\Facades\JWTAuth;
class ApiController extends Controller
{
public function auth(Request $request)
{
$cds = $request->only('name', 'password');
try {
if (!$token = JWTAuth::attempt($cds)) {
return response()->json(['error' => 'invalid_credentials'], 401);
}
} catch (JWTException $e) {
return response()->json(['error' => 'could_not_create_token'], 500);
}
return response()->json(compact('token'));
}
public function getAuth(Request $request)
{
try {
if (!$user = JWTAuth::parseToken()->authenticate()) {
return response()->json(['user_not_found'], 404);
}
} catch (TokenExpiredException $e) {
return response()->json(['token_expired'], $e->getStatusCode());
}catch (TokenInvalidException $e){
return response()->json(['token_invalid'], $e->getStatusCode());
}catch (JWTException $e){
return response()->json(['token_absent'], $e->getStatusCode());
}
return response()->json(compact('user'));
}
}
我們先訪問登錄接口獲取token
,使用user表里面的用戶
我們使用另外的要驗證登錄用戶的接口來檢測
訪問方式需要在headers里進行配置,如下
key:Authorization vaule:Bearer+空格+token
這里我們通過登錄路接口的的token獲取到了用戶的信息,我們可以根據這個信息獲取到用戶的權限等信息,封裝成一個權限控制的中間件來對用戶權限進行控制
api用戶表情況
- 很多情況接口的用戶并不是默認的user用戶表,是我們自己新建的用戶表,JWTAuth默認的是對默認的user表進行信息鑒權,我們需要對配置信息進行修改
在config/auth.php用戶登錄的配置都為user表,我們不能直接修改這張表的配置,修改后會影響正常的web端。我們需要動態的修改這些數據,對需要的路由進行數據修改,我們可以使用中間件去完成
- 新建中間件,并寫上加入到相對應的路由上,我們就能使用api對應的用戶表進行數據校驗
public function handle($request, Closure $next)
{
config(['jwt.user' => 'App\Models\hwtc\Apiuser']); //重要用于指定特定model
config(['auth.providers.users.model' => \App\Models\hwtc\Apiuser::class]); //重要用于指定特定model
return $next($request);
}
原文鏈接:https://blog.csdn.net/weixin_43674113/article/details/114653230
相關推薦
- 2022-09-13 Linux中一對多配置日志服務器的詳細步驟_Linux
- 2022-07-29 Jquery定義對象(閉包)與擴展對象成員的方法_jquery
- 2024-01-07 IDEA中自動導包及快捷鍵
- 2023-07-26 webpack中plugin的工作原理
- 2022-10-31 sql查詢給表起別名要點小結(涉及嵌套查詢)_oracle
- 2022-04-27 Python中的元組(Tuple)操作實例詳解_python
- 2022-11-02 python函數和python匿名函數lambda詳解_python
- 2022-11-01 Golang解析yaml文件操作指南_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支