当前位置:网站首页>Laravel8 uses passport authentication to log in and generate a token
Laravel8 uses passport authentication to log in and generate a token
2022-07-06 23:24:00 【Elante pace】
install passport
composer require laravel/passport
Execute the migration command
php artisan migrate
Create encryption keys required to generate security access tokens
php artisan passport:install
App\Models\ApiUser lead Trait
<?php
namespace App\Models;
use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as AuthUser;
class ApiUser extends AuthUser
{
use HasApiTokens, Notifiable;
}
App\Providers\AuthServiceProvider
Let go of 'App\Models\Model' => 'App\Policies\ModelPolicy' Notes
boot Next Passport::routes();
<?php
namespace App\Providers;
use Laravel\Passport\Passport;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
'App\Models\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
Passport::routes();//token The period of validity of the certification Passport::tokensExpireIn(now()->addHour(2)); // Refresh token The period of validity of the certification Passport::refreshTokensExpireIn(now()->addDays(30)); Passport::personalAccessTokensExpireIn(now()->addMonths(6));}
}
stay config/auth.php Middle configuration
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],'apiweb'=>[
'driver' => 'session',
'provider' => 'apiusers',],
'api' => [
'driver' => 'passport',
'provider' => 'apiusers',
// 'hash' => false,
],
],'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\User::class, ], 'apiusers' => [ 'driver' => 'eloquent', 'model' => \App\Models\ApiUser::class, ], ]
App\Http\Controllers\Api\LoginController
public function login(Request $request) { try { $this->validate($request,[ 'username'=>'required', 'password'=>'required' ]); } catch (\Exception $e){ return response()->json(['code'=>403,'msg'=>' Account number or password cannot be empty ','data'=>[]]); } // Verify account and password $bool = auth()->guard('apiweb')->attempt($request->except('/api/login')); if($bool) { $user = auth()->guard('apiweb')->user(); if($user->click > env('APINUM')) { return response()->json(['code'=>405,'msg'=>' The number of requests on that day has reached the maximum ','data'=>[]]); } $token = $user->createToken('api')->accessToken; $user->increment('click'); $data = [ 'expire'=>3600*24*30, 'token'=>$token ]; return response()->json(['code'=>400,'msg'=>' Generate token success ','data'=>$data]); }else{ return response()->json(['code'=>403,'msg'=>' Incorrect account or password ','data'=>[]]); } }
边栏推荐
- Face recognition class attendance system based on paddlepaddle platform (easydl)
- flinksql select id ,count(*) from a group by id .
- What does front-end processor mean? What is the main function? What is the difference with fortress machine?
- 企業不想換掉用了十年的老系統
- The problem that dockermysql cannot be accessed by the host machine is solved
- 让我们,从头到尾,通透网络I/O模型
- Summary of three methods for MySQL to view table structure
- Dayu200 experience officer homepage AITO video & Canvas drawing dashboard (ETS)
- ICLR 2022 | pre training language model based on anti self attention mechanism
- Isomorphism + cross end, knowing applet +kbone+finclip is enough!
猜你喜欢
PDF批量拆分、合并、书签提取、书签写入小工具
The problem of ASP reading Oracle Database
云原生(三十二) | Kubernetes篇之平台存储系统介绍
Bipartite graph determination
None of the strongest kings in the monitoring industry!
What can be done for traffic safety?
企業不想換掉用了十年的老系統
监控界的最强王者,没有之一!
Efficient ETL Testing
【Unity】升级版·Excel数据解析,自动创建对应C#类,自动创建ScriptableObject生成类,自动序列化Asset文件
随机推荐
Station B boss used my world to create convolutional neural network, Lecun forwarding! Burst the liver for 6 months, playing more than one million
Redis 持久化机制
室内LED显示屏应该怎么选择?这5点注意事项必须考虑在内
Today's sleep quality record 78 points
不要再说微服务可以解决一切问题了
JS addition, deletion, modification and query of JSON array
Case recommendation: An Qing works with partners to ensure that the "smart court" is more efficient
AI金榜题名时,MLPerf榜单的份量究竟有多重?
Spark Tuning (II): UDF reduces joins and judgments
[launched in the whole network] redis series 3: high availability of master-slave architecture
mysql连接vscode成功了,但是报这个错
MySQL数据库之JDBC编程
(DART) usage supplement
存币生息理财dapp系统开发案例演示
Motion capture for snake motion analysis and snake robot development
mysql拆分字符串作为查询条件的示例代码
这个『根据 op 值判断操作类型来自己组装 sql』是指在哪里实现?是指单纯用 Flink Tabl
koa2对Json数组增删改查
企業不想換掉用了十年的老系統
On file uploading of network security