Passport是一个oAuth2服务器实现,本质上,它允许您通过在每个请求中传递令牌来验证用户。如果您不想对用户进行身份验证,则不需要传递令牌,passport也不会参与其中。
就a而言
Laravel
如果您正在使用自己前端的API,您可能只想使用
implicit grant
。下面是如何设置的:
1) 安装passport并将其添加到
PassportServiceProvider
配置/应用。php
(2)
php artisan migrate
设置passport迁移
(3)
php artisan passport:install
-设置oAuth服务器
4) 在
User
模型添加
Laravel\Passport\HasApiTokens
特质,比如:
namespace App;
use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
// Other model methods
}
5) 通过将以下内容添加到
boot
您的方法
app\Providers\AuthServiceProviders.php
:
\Laravel\Passport\Passport::routes();
6) 更改您的
api driver
在里面
config/auth.php
到
token
:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
这就建立了passport,现在您只需添加
CreateFreshApiToken
中间件到
web
在里面
app/Http/Kernel.php
,它处理所有令牌逻辑:
'web' => [
// ..Other middleware...
\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
],
现在,要保护路由,只需在该路由上使用auth:api中间件:
Route::middleware('auth:api')->get('/profile','Api\UsersController@edit');
这应该可以正常工作,但您还需要注册一个新用户。您所要做的就是将身份验证路由正常添加到
web.php
:
Route::post('/login', 'Auth\LoginController@login');
Route::post('/logout', 'Auth\LoginController@logout');
Route::post('/register', 'Auth\RegisterController@register');
然后,您只需向这些路线发出post请求
拉雷维尔
将为您处理所有代币。
处理需要身份验证的api路由,但是,您还提到要检查用户是否经过身份验证,但不一定要锁定路由,为此,您可以简单地使用:
Auth::guard('api')->user();
这将获得经过身份验证的用户,因此您可以执行以下操作:
public function getGreeting(){
$user = Auth::guard('api')->user();
if($user !== null) {
return response()->json(["message" => "Hello {$user->name}"], 200);
}
return response()->json(["message" => "Hello Guest"], 200);
}
就是这样。希望我已经报道了那里的一切。