laravel 使用JWT實現使用者認證
在laravel使用Token進行使用者認證
首先先安裝拓展包
composer require tymon/jwt-auth 0.5.*
然後在配置中註冊
Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class
.....
'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class
'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class
釋出配置檔案生成金鑰
php artisan vendor:publish --provider="Tymon\JWTAuth \Providers\JWTAuthServiceProvider"
php artisan jwt:generate
然後建立註冊和登入路由
/routes/web.php
Route::post('/register', 'Auth\[email protected]');
Route::post('/login','Auth\[email protected]');
去控制器建立註冊使用者方法
app/Http/Controllers/Auth/RegisterController.php
protected function create(array $data){}
public function register(Request $request)
{
$this->validator($request->all())->validate();
//驗證的規則
$user = $this->create($request->all());//存資料到資料庫
$token = JWTAuth::fromUser($user);
//通過使用者物件例項建立token
return ["token" => $token];
}
接下來建立登入的方法,這裡我是用郵箱登入
app/Http/Controllers/Auth/LoginController.php
public function email(Request $request)
{
// grab credentials from the request
$credentials = $request->only('email', 'password');
try {
// attempt to verify the credentials and create a token for the user
if (! $token = JWTAuth::attempt($credentials)) {
return response()->json(['error' => 'invalid_credentials'], 401);
}
} catch (JWTException $e) {
// something went wrong whilst attempting to encode the token
return response()->json(['error' => 'could_not_create_token'], 500);
}
// all good so return the token
return response()->json(compact('token'));
}
之後就會得到
{
“token”:”eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwiaXNzIjoiaHR0cDpcL1wvbG9jYWx
ob3N0OjgwMDFcL2F1dGhcL2xvZ2luIiwiaWF0IjoxNDUxODg4MTE5LCJleHAiOjE0NTQ1MTYxMTksIm5iZiI6MTQ1MTg4OD
}
token可以設定Authorization頭來使用:
Authorization: Bearer {yourtokenhere}
也可以放進URL中使用
使用者完成登入註冊之後就可以設定需要登入後才能訪問的路由,首先到
app/Http/Kernel.php
protected $routeMiddleware = [
...
'jwt.auth' => 'Tymon\JWTAuth\Middleware\GetUserFromToken',
'jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken',
];
然後就是設定路由
routes/web.php
Route::group(['middleware' => 'jwt.auth', 'providers' => 'jwt'], function () {
Route::post('/test', '[email protected]');
});
這樣就代表在訪問/test路由的時候需要帶有token,登入才能訪問
而獲取使用者資訊則可以在TestController中的test方法中採用
$user = JWTAuth::parseToken()->authenticate();//獲取使用者資訊
相關推薦
laravel dingo/api添加jwt-auth認證
err vendor play world! mail hang 提示 verify extend 前面我們學了laravel dingo/api創建簡單的api,這樣api是開放給所有人的,如何查看和限制api的調用呢?可以用jwt-auth來驗證,JSON Web To
laravel使用JWT做認證登入
最近專案做API認證,最終技術選型決定使用JWT,專案框架使用的是laravel,laravel使用JWT有比較方便使用的開源包:jwt-auth。 使用composer安裝jwt-auth,laravel使用的框架版本為5.0,jwt-auth最新穩定版本為0.5
[django]前後端分離之JWT使用者認證
在前後端分離開發時為什麼需要使用者認證呢?原因是由於HTTP協定是不儲存狀態的(stateless),這意味著當我們透過帳號密碼驗證一個使用者時,當下一個request請求時它就把剛剛的資料忘了。於是我們的程式就不知道誰是誰,就要再驗證一次。所以為了保證系統安全,我們就需要驗證使用者否處於登入狀態。 傳統方
5.1基於JWT的認證和授權「深入淺出ASP.NET Core系列」
希望給你3-5分鐘的碎片化學習,可能是坐地鐵、等公交,積少成多,水滴石穿,碼字辛苦,如果你吃了蛋覺得味道不錯,希望點個贊,謝謝關注。 Cookie-Based認證 認證流程 我們先看下傳統Web端的認證流程: 以上流程很簡單,有過mvc開發經驗的都瞭如指掌,一圖勝千言就不展開
前後端分離模式下JWT使用者認證及其在DRF中的應用
在前後端分離開發時為什麼需要使用者認證呢?原因是由於HTTP協定是不儲存狀態的(stateless),這意味著當我們透過帳號密碼驗證一個使用者時,當下一個request請求時它就把剛剛的資料忘了。於是我們的程式就不知道誰是誰,就要再驗
ASP.NET Core WebAPI中使用JWT Bearer認證和授權
目錄 為什麼是 JWT Bearer 什麼是 JWT JWT 的優缺點 在 WebAPI 中使用 JWT 認證 重新整理 Token 使用授權 簡單授權 基於固定角色的授權 基於策略的授權 自定義策略授權 基於資源的授權 原
JWT——Token認證的兩種實現和安全詳解
前言: 最近因為專案中需要解決跨域取值的問題,所有考慮到用Token認證做技術支撐點,自己看了許多與之相關的文章,從中總結出了以下兩個要點(簽名和token時間)。在說這兩個要點之前先大概簡單說一下與之有關的一些問題。 首先,如果你對token認證的知識一點都不瞭解,那麼我覺得這篇文章還不太適合你,
.net core的使用JWT身份認證模式
1.使用JWT身份認證模式,引入庫:IdentityServer4.AccessTokenValidation 2.在StartUp.cs中新增加密祕鑰串: public static readonly SymmetricSecurityKey symmetricKey = new Symm
JWT Token認證
什麼是JWT? JWT是JSON Web Token的縮寫,定義了一種簡介自暴寒的方法用於通訊雙方之間以Json物件的形式安全的傳遞資訊。因為特定的數字簽名,所以這些通訊的資訊能夠被校驗和信任。 JWT可以使用HMAC演算法或者RSA的公鑰私鑰對進行簽名。 讓我們進一步的解釋下關於J
Laravel使用ApiToken認證請求
1.開啟 database/migrations/2014_10_12_000000_create_users_table.php 這個 migration 檔案, 我們需要更改 user 表的結構 2.我們需要為 user 表新增 api_token 欄位,
spring jwt token 認證
maven 裡的包 <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.7.0&l
laravel的Auth認證,登入、註冊後的頁面回跳
laravel自帶的 auth 認證中介軟體 - app/Http/Middleware/Authenticate.php 檢視原始碼: if (Auth::guard($guard)->guest()) { if ($request->
記一次laravel-jwt修改黑名單所用redis資料庫
場景是這樣的,我用tymon/jwt包做鑑權。jwt是自編碼token,過期前想要強制失效只能將其加入黑名單中,黑名單一般用快取儲存。 但會有一個問題,若某種意外情況不小心執行了php aritsan cache:clear,那麼當前使用的快取資料庫(配置檔案中設定,預設config/database.ph
laravel jwt 退出登入
public function exit_logon(Request $request) { // JWTAuth::invalidate(JWTAuth:
【譯】使用Jwt身份認證保護 Asp Net Core Web Api
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
laravel 用戶認證簡單示例
return mod 用戶信息 pub post quest space mina 跳轉 一、模型代碼: 實現接口:\Illuminate\Contracts\Auth\Authenticatable 並引入trait:\Illuminate\Auth\Authentica
前後端分離之JWT使用者認證
在前後端分離開發時為什麼需要使用者認證呢?原因是由於HTTP協定是不儲存狀態的(stateless),這意味著當我們透過帳號密碼驗證一個使用者時,當下一個request請求時它就把剛剛的資料忘了。於是我們的程式就不知道誰是誰,就要再驗證一次。所以為了保證系統安全,我們就需要驗證使用者否處於登入狀態。傳統方式前
beego中引入jwt許可權認證,有效的實行SSO(單點登入)
友情推廣 beego簡介 beego是一款使用golang開發的流行框架.github.com上地址 jwt簡介 基於jwt寫的兩個函式 package hjwt import ( "fmt" "time" jwt "github.com/
ASP.NET Core 基於JWT的認證(二)
ipa arr role fig get metrics ets parameter 身份證號碼 ASP.NET Core 基於JWT的認證(二) 上一節我們對 Jwt 的一些基礎知識進行了一個簡單的介紹,這一節我們將詳細的講解,本次我們將詳細的介紹一下 Jwt在 .Ne
ASP.NET Core 中jwt授權認證的流程原理
[TOC] ## 1,快速實現授權驗證 什麼是 JWT ?為什麼要用 JWT ?JWT 的組成? 這些百度可以直接找到,這裡不再贅述。 實際上,只需要知道 JWT 認證模式是使用一段 Token 作為認證依據的手段。 我們看一下 Postman 設定 Token 的位置。 ![](https://