1. 程式人生 > >laravel 使用JWT實現使用者認證

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://