laravel passport 的 oauth2机制(一)-- 安装配置
唔系我认叻 -一、Oauth2
1、定义:
OAuth 2.0 是一种授权(authorization)机制,主要用来颁发令牌(token)。
2、成员:
Client(客户端)
Service(验证服务器)
3、流程:
4、oauth2授权模式
二、laravel passport
1、安装composer require laravel/passport
安装数据表php artisan migrate
从compoer项目中服务配置文件到config下php artisan passport:install
添加 Laravel\Passport\HasApiTokens trait 到 App\User 模型
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
配置文件 config/auth.php 中
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
需要在 AuthServiceProvider 的 boot 方法中调用 Passport::routes 方法,该方法将会为颁发访问令牌、撤销访问令牌、客户端以及私人访问令牌注册必要的路由
namespace App\Providers;
use Laravel\Passport\Passport;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class AuthServiceProvider extends ServiceProvider
{
public function boot()
{
$this->registerPolicies();
Passport::routes();
}
}
passport 服务端认证服务配置 phpartisan passport:client --password
数据会再新生成记录存放在 oauth_clients表中
2、客户端请求
代码:
Route::get('/auth/password', function (\Illuminate\Http\Request $request){
$http = new \GuzzleHttp\Client();
$response = $http->post('http://http://mypassport.service.com/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => '3',
'client_secret' => 'Yom4nnZUKVIwYQPOWjnoCh9LHFkZV3pKh83fQe0s',
'username' => 'aa@qq.com',
'password' => 'abc123',
'scope' => '*',
],
]);
return json_decode((string)$response->getBody(), true);
});
postman:
以上就是整个laravel passport oauth2 的安装配置。
总结
1、安装并配置好passport后,用他们指导路由去请求,获取相关access_token;
2、现在这个只是一个简单password模式,里面还有token过期时间、scope的权限验证等都没有列出来。下篇会从源码上写出流程和逻辑。
参考:
https://laravelacademy.org/po...https://www.ruanyifeng.com/bl...
特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。
laravel介绍
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。在Laravel中已经具有了一套高级的PHP ActiveRecord实现 -- Eloquent ORM。它能方便的将“约束(constraints)”应用到关系的双方,这样你就具有了对数
上一篇: 【PHP入门系列】3-PHP面向对象