首页 > 解决方案 > Laravel 中的护照是什么?

问题描述

我是网络服务的初学者。我必须使用 Laravel 为移动应用程序制作 API。在 Laravel 文档中,我有API Authentication (Passport)。我试图理解这一点,但不清楚。

谁能详细告诉我?

提前致谢

标签: laravellaravel-passport

解决方案


好吧,就在这里

如果您转到“介绍”选项卡,那么在您共享的文档中,它本身就有一个很好的介绍。我想你知道什么是 RESTfull API 吧?如果你不在这里。因此,由于其余 API 不使用会话(在 PHP 中您知道这一点),所有 API 调用都将是无状态的(会话较少)。因此您将需要一种身份验证机制来验证客户端实际上是他所说的那个人。这就是此身份验证方法的用武之地,此 oauth 服务专门设计用于在处理 REST 无状态会话时解决此问题。

如果您听说过令牌,这样做的作用是,当用户稍后注册并登录时,登录时将使用数据库检查用户的登录详细信息,如果用户已通过身份验证(用户名和密码匹配),则令牌将被生成..这个令牌有点像一个会话,但很酷的部分是它依赖于客户端机器。所以这有点像保留在客户端的会话细节。因此,在 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 个“.”(句点),这是为了区分标头、有效负载和签名,最后一部分是服务器将使用服务器的秘密检查它的部分,或者称为验证此令牌的签名是否为有效令牌


推荐阅读