salmanzafar / laravel-jwt-auto-installer
此包已被弃用,不再维护。未建议替代包。
一个Laravel库,允许您通过单条命令添加tymon jwt auth库及其所有功能
v1.0.1
2020-01-06 17:42 UTC
Requires
- php: >=7.0.0
- tymon/jwt-auth: ^1.0.0-rc.5
Requires (Dev)
- laravel/framework: >=5.5
This package is auto-updated.
Last update: 2021-01-01 10:42:32 UTC
README
一个Laravel库,允许您通过单条命令添加tymon jwt auth库及其所有功能
为什么需要这个?
使用tymon/jwt-auth
的人都知道,每次安装包时,他们都需要手动创建AuthController,然后复制粘贴所有代码,同样的情况也适用于模型和路由。所以每次您不得不这样做时,都会花费一些时间,作为开发者,我们希望有更简单的方法来做这件事。因此,我想出了这个主意,希望它可以帮助您,并使您的工作变得简单。
这个包会做什么?
该包将为您创建以下内容
- 为您安装
tymon/jwt-auth
- 将在
App\Http\Controllers
内部发布AuthController (带代码)
User.php
(模型,包括jwt函数的所有代码)- 将在
api.php
中发布路由(将创建所有认证路由,例如(登录、注册、认证用户详情、刷新令牌、注销)
) - 还将发布您的
JWT_SECRET
到.env文件
安装
使用包管理器composer安装laravel-jwt-auto-installer。
composer require salmanzafar/laravel-jwt-auto-installer
启用包(可选)
此包实现了Laravel自动发现功能。安装后,自动添加了包提供者和外观,适用于laravel >= 5.5。
配置
发布服务提供者文件
此步骤是必需的
php artisan vendor:publish --provider="Salman\AutoJWT\AutoJWTServiceProvider"
使用方法
php artisan jwt:init Controller Model and Routes and Jwt Secret published.Thanks
就是这样,现在它会发布您想要的一切,例如控制器模型(带有jwt函数)和JWT的API路由
AuthController.php
<?php namespace App\Http\Controllers; use App\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use Symfony\Component\HttpFoundation\Response; class AuthController extends Controller { /** * Create a new AuthController instance. * * @return void */ public function __construct() { $this->middleware('auth:api', ['except' => ['login','register']]); } /** * @param Request $request * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response * @throws \Illuminate\Validation\ValidationException */ public function register(Request $request) { $this->validate($request, [ "name" => "required|string|min:4", "email" => "required|email", "password" => "required|min:8|max:20|confirmed" ]); $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password), ]); return response([ 'data' => 'Thank you.Your account has been created' ],Response::HTTP_CREATED); } /** * Get a JWT via given credentials. * * @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); } /** * Get the authenticated User. * * @return \Illuminate\Http\JsonResponse */ public function me() { return response()->json(auth()->user()); } /** * Log the user out (Invalidate the token). * * @return \Illuminate\Http\JsonResponse */ public function logout() { auth()->logout(); return response()->json(['message' => 'Successfully logged out']); } /** * Refresh a 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 ]); } }
User.php
<?php namespace App; use Illuminate\Contracts\Auth\MustVerifyEmail; use Tymon\JWTAuth\Contracts\JWTSubject; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable implements JWTSubject { use Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; /** * The attributes that should be cast to native types. * * @var array */ protected $casts = [ 'email_verified_at' => 'datetime', ]; /** * 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 []; } }
api.php
Route::group(['prefix' => 'user'], function () { Route::post('register', 'AuthController@register'); Route::post('login', 'AuthController@login'); Route::group(['middleware' => ['auth:api']], function () { Route::post('refresh', 'AuthController@refresh'); Route::post('me', 'AuthController@me'); Route::post('logout', 'AuthController@logout'); }); });
贡献
欢迎提交拉取请求。对于重大更改,请先打开一个问题来讨论您想更改的内容。
请确保根据需要更新测试。