我几乎没有开始阅读 JWT,我相信我了解 JWT 令牌是什么。我对 SESSIONS 也相当熟悉。我相信我了解每个人的优点和缺点。但是,有几个部分让我感到困惑。
当请求受保护的资源时,您需要在每个请求上发送 jwt,而不是将会话存储在服务器上。但:
1) 你如何存储你的 JWT 令牌以及在哪里。从我读到的内容中,我了解到您将身份验证请求发送到服务器,如果您成功通过身份验证,服务器会向您发送 JWT 令牌。那你怎么办?,你是否将 JWT 存储在 cookie 中,就像我在某些网站上读到的那样?如果是这样,你怎么做(使用 php,使用 javascript)。以及如何阅读。
2)使用会话时,或多或少您只是检查是否有会话来检查用户是否登录。使用JWT时如何完成此操作。
我也在一些页面上看到了这个:
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
Run Code Online (Sandbox Code Playgroud)
这与此有什么关系(如果有关系的话)
从客户端来看,好的做法是将 JWT 存储在 cookie 中,模式为 http_only=true、is_secure (以便仅通过 https 发送),这样 JWT 就无法被 javascript 访问。这样,我们就不用担心 XSS 附加了。
我们不需要在服务器端存储会话。JWT 包含两部分,负载数据和签名,由服务器端存储的密钥签名,只有服务器知道。当我们从客户端收到令牌时,我们检查有效负载数据是否有效(用户信息,谁分配了该令牌,将该令牌分配给了谁,该令牌授予了哪些角色,过期时间),并检查签名以确保确保该令牌是由服务器分配的,而不是伪造的。然后用户将被验证。
这就像政府发给公民的护照,数据(有效负载)对每个人来说都是可读的,但签名只能由政府创建,并且可以对其进行验证。
小智 0
JWT 主要是一种在 REST API 上对用户进行身份验证的方法,正如您所说,您将其发送到客户端,并且无需将其存储在会话中。
但是,如果您正在制作浏览器应用程序,我认为不需要使用 JWT 身份验证,因为您可以使用会话和 cookie 来执行此操作。
JWT 主要适用于这些情况,例如,当您有移动应用程序前端时,不建议甚至不可能维持会话。
但是,如果您正在制作混合应用程序,那么将其存储在“浏览器”的本地存储中是可行的方法。JWT 永远不会存储在服务器端。
| 归档时间: |
|
| 查看次数: |
4520 次 |
| 最近记录: |