Heim > PHP-Framework > Laravel > Detaillierte Schritte für Laravel zur Implementierung der API-Benutzerautorisierung mithilfe von JWT

Detaillierte Schritte für Laravel zur Implementierung der API-Benutzerautorisierung mithilfe von JWT

不言
Freigeben: 2019-01-01 09:34:39
nach vorne
10547 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit den detaillierten Schritten für die Implementierung der API-Benutzerautorisierung durch Laravel. Ich hoffe, dass er für Sie hilfreich ist.

Teil 1 Installation von JWT

Schritt 1. Verwenden Sie Composer, um tymon/jwt-auth zu installieren:

`composer benötigt tymon/jwt -auth 1.0.0-rc.3

Schritt 2. Fügen Sie den Dienstanbieter hinzu (Laravel 5.4 und niedriger, 5.5 und höher müssen nicht hinzugefügt werden),

fügen Sie die folgende Zeile zu den Anbietern hinzu Array der Datei config/app.php:

<?php // 文件:app.php
&#39;providers&#39; => [
    // other code
    Tymon\JWTAuth\Providers\LaravelServiceProvider::class,
]
Nach dem Login kopieren

Schritt 3. Veröffentlichen Sie die Konfigurationsdatei.
Führen Sie den folgenden Befehl aus, um die jwt-auth-Konfigurationsdatei zu veröffentlichen:

php artisan seller:publish --provider="TymonJWTAuthProvidersLaravelServiceProvider"

Schritt 4. Generieren Sie einen Schlüssel,

Dieser Befehl fügt Ihrer .env-Datei eine neue Zeile JWT_SECRET=secret hinzu.
php artisan jwt:secret

Der zweite Teil beginnt mit der Konfiguration

Schritt 5. Konfigurieren Sie Auth Guard, `
in config/auth In Für die .php-Datei müssen Sie Guards/Treiber auf jwt aktualisieren.
Dies kann nur verwendet werden, wenn Laravel 5.2 und höher verwendet wird.

<?php     &#39;defaults&#39; => [
    'guard' => 'api',
    'passwords' => 'users',
],
// other code
'guards' => [
    'api' => [
        'driver' => 'jwt',
        'provider' => 'users',
    ],
],
Nach dem Login kopieren

第六步. Benutzermodell ändern,
die TymonJWTAuthContractsJWTSubject-Schnittstelle im Benutzermodell implementieren,
getJWTIdentifier implementieren () und getJWTCustomClaims() zwei Methoden.

<?php namespace App;

use Tymon\JWTAuth\Contracts\JWTSubject;

class User extends Authenticatable implements JWTSubject
{
    // other code

    // Rest omitted for brevity
    
    /**
     * Get the identifier that will be stored in the subject claim of the JWT.
     *
     * @return mixed
     */
    public function getJWTIdentifier()
    {
        return $this->getKey();
    }

    /**
     * Return a key value array, containing any custom claims to be added to the JWT.
     *
     * @return array
     */
    public function getJWTCustomClaims()
    {
        return [];
    }
}
Nach dem Login kopieren

Teil 3 Erstellen Sie schnell einen DEMO-Test

Schritt 7. Fügen Sie einige grundlegende Authentifizierungsrouten hinzu:

<?php Route::group([
    &#39;middleware&#39; => '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');
});
Nach dem Login kopieren
第八步. Create AuthController => php artisan make:controller AuthController:
<?php namespace App\Http\Controllers;

use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

class AuthController extends Controller
{
    /**
     * Create a new AuthController instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth:api', ['except' => ['login', 'register']]);
    }

    /**
     * 用户使用邮箱密码获取JWT Token.
     *
     * @return \Illuminate\Http\JsonResponse
     */
    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 \Illuminate\Http\JsonResponse
     */
    public function me()
    {
        return response()->json(auth()->user());
    }

    /**
     * 刷新Token.
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function refresh()
    {
        return $this->respondWithToken(auth()->refresh());
    }


    /**
     * Get the token array structure.
     *
     * @param  string $token
     *
     * @return \Illuminate\Http\JsonResponse
     */
    protected function respondWithToken($token)
    {
        return response()->json([
            'access_token' => $token,
            'token_type' => 'bearer',
            'expires_in' => auth()->factory()->getTTL() * 60
        ]);
    }
}
Nach dem Login kopieren

Schritt 9. Verwenden Sie Postman, um die API zu testen:

Detaillierte Schritte für Laravel zur Implementierung der API-Benutzerautorisierung mithilfe von JWT

Detaillierte Schritte für Laravel zur Implementierung der API-Benutzerautorisierung mithilfe von JWT


Um die API-Datenerfassung zu testen, müssen Sie Token in den Headern hinzufügen;

key=Authorization , value=Bearer Space Token

Detaillierte Schritte für Laravel zur Implementierung der API-Benutzerautorisierung mithilfe von JWT

Token-Aktualisierung:

Detaillierte Schritte für Laravel zur Implementierung der API-Benutzerautorisierung mithilfe von JWT


Das obige ist der detaillierte Inhalt vonDetaillierte Schritte für Laravel zur Implementierung der API-Benutzerautorisierung mithilfe von JWT. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage