【发布时间】:2019-06-11 13:35:03
【问题描述】:
我是网络服务的初学者。我必须使用 Laravel 为移动应用程序制作 API。在 Laravel 文档中,我得到了 API Authentication (Passport)。我试图理解这一点,但不清楚。
谁能详细介绍一下?
提前致谢
【问题讨论】:
-
介绍很清楚吧?
我是网络服务的初学者。我必须使用 Laravel 为移动应用程序制作 API。在 Laravel 文档中,我得到了 API Authentication (Passport)。我试图理解这一点,但不清楚。
谁能详细介绍一下?
提前致谢
【问题讨论】:
API 也称为 Web 服务。
安装集成在 Laravel 中的基本认证系统和 Laravel 护照:
composer require laravel/passport
php artisan make:auth
php artisan passport:install
php artisan migrate
将 Laravel\Passport\HasApiTokens 特征添加到我们的 App\User 模型和 我们的 boot 方法中的 Passport::routes 方法 app/AuthServiceProvider 这样的:
public function boot() {
$this->registerPolicies();
Passport::routes();
}
最后将 api 身份验证保护的driver 选项设置为passport,如下所示:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
现在用 Postman 测试一切正常(你可以使用任何其他 模拟http请求的工具)。
注册路由返回一个令牌(因为它会自动记录你) 但我们将使用登录路由重新生成它以检查它是否有效 好吧。
这样你就可以在你的 web 应用中使用 Laravel Passport
【讨论】:
就在这里,
在您分享的文档中,如果您转到“介绍”选项卡,它本身就有一个很好的介绍。我想你知道什么是 RESTfull API 吧?如果你不here。 因此,由于其余 API 不使用会话(在 PHP 中您知道这一点),所有 API 调用都将是无状态的(会话较少)。因此您将需要一个身份验证机制来验证客户端实际上是他所说的那个人。这就是 Authentication 方法的用武之地,这个 oauth 服务专门设计用于在处理 REST 无状态会话时解决这个问题..
如果您听说过 tokens,这样做的作用是,当用户稍后注册并登录时,登录时将使用数据库检查用户的登录详细信息,如果用户经过身份验证(用户名和密码匹配),然后将生成一个令牌。这个令牌有点像一个会话,但很酷的部分是它依赖于客户端计算机。所以这有点像保留在客户端的会话细节。因此在 REST 请求时,此令牌将与请求的标头一起传递。
**
现在生成token的机制
**
您现在可能想知道这一定是小菜一碟。不,不是,因为现在假设您有一个包含此数据的客户端令牌
{
username:"JhonSnow",
email:"winteriscomming@gmail.com",
type:"user"
}
现在首先使用 base64url 编码对该令牌进行加密。好的,现在可以使用 base64 解码器来尊重它。但令人敬畏的是,即使攻击者可以从令牌中获取这些信息,他也无法像这样提升应用程序的权限
类型:“用户”
到
`类型:“管理员”
` 因为可以使用 0-auth 提供的服务器端身份验证机制来检查这个会话之类的令牌的完整性,这就是为什么它在 Web 开发中被普遍使用和非常流行的原因。 现在我之前详细提到了令牌的结构,它有点复杂。更像是这样的
header:{
"alg": "HS256",
"typ": "JWT"
},
payload:{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
现在使用此详细信息,将生成令牌.. 像这样
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.he0ErCNloe4J7Id0Ry2SEDg09lKkZkfsRiGsdX_vgEg
如果你仔细看,你会发现这个令牌中有 3 个“.”(句点),这是为了区分标头、有效负载和签名,最后一部分是服务器将使用服务器的秘密检查它的部分或称为验证此令牌的签名是否是有效令牌
【讨论】:
在今天,API 也称为 Web 服务。在创建 Web 和移动应用程序开发时,Web 服务非常重要。您需要为您的移动应用程序开发人员创建 API。正如我们所知,laravel 更受欢迎是因为它创建了 API。但是,如果您是初学者并且不知道什么是 API 和 Web 服务,那么您来对地方了。
什么是护照?
API 通常使用令牌对用户进行身份验证,并且不维护请求之间的会话状态。 Laravel 使用 Laravel Passport 使 API 身份验证变得轻而易举,它在几分钟内为您的 Laravel 应用程序提供完整的 OAuth2 服务器实现。
更多信息在这里
https://mattstauffer.com/blog/introducing-laravel-passport/
http://esbenp.github.io/2017/03/19/modern-rest-api-laravel-part-4/
【讨论】: