当前位置: 首页 > 知识库问答 >
问题:

Angular中令牌验证的最佳方法

金秦斩
2023-03-14
  1. 每次路由转换时验证令牌。为此,我必须在每次要验证时进行rest调用。
  2. 只通过一次rest调用验证令牌一次,然后将令牌存储在本地存储中。(令牌本身只有一个布尔值指示它是否通过了身份验证)

我关心的是不要在每一个路由事务中进行rest调用,我不想消耗那么多http流量。但是,如果没有别的办法,我会这么做的。

共有1个答案

诸葛令
2023-03-14

如果我们研究一下JSON Web令牌(JWT)是什么(尽管您并不是特别指JWT,而是简单地指“令牌”),您就会意识到,一旦您获得了一个JWT,您就不需要每次在客户端应用程序(Angular)中进行转换时都验证它。这是因为JWT通常是签名的,所以服务器可以确保发送者(在本例中是Angular app)在发出请求时是他们所说的。

您需要做的是在每次尝试消耗资源时,将头中每个请求的JWT发送到API服务器。服务器负责检查您是否发送了有效的JWT,并为该请求分配适当的权限,以便访问资源。

总结(并回答您的问题)

不,这是没有用的,因为给定的令牌已经由服务器签名了。如果令牌在客户机中被以任何方式操纵,资源服务器都将知道它,并将以正确的HTTP状态代码(通常为401 HTTP状态)进行应答。

您可以做的是,如果服务器使用401响应,您可以使用刷新令牌(如果服务器提供了它),以便获得一个新的访问令牌,并在每个请求中再次使用它。这样,最终用户将永远不会知道幕后发生了什么(也不会再看到登录表单),因为您不会再询问他/她关于用户名和密码的信息。

2.只通过一次rest调用验证令牌一次,然后将令牌存储在本地存储中。(令牌本身只有一个boolean值,告诉它是否通过了身份验证)

如果我是你的话,我会读很多关于这方面的文章,因为这里有很多东西需要了解,而不是任何一个回答者在一个答案中能综合起来的东西(我放了一些链接到我用过的资料来源,这些资料很好地描述了这些主题)。

请记住,所有这些行为都可以根据您的需要进行修改,而不是所有的行为都必须是我刚才描述的方式。我只是举了一些例子来说明它是如何发生的。

下面的图片将给你一个关于我刚才描述的所有这些事情的大图片。

 类似资料:
  • 本文向大家介绍Angular之jwt令牌身份验证的实现,包括了Angular之jwt令牌身份验证的实现的使用技巧和注意事项,需要的朋友参考一下 Angular之jwt令牌身份验证 demo https://gitee.com/powersky/jwt 介绍 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该toke

  • 通过令牌验证在注册中心控制权限,以决定要不要下发令牌给消费者,可以防止消费者绕过注册中心访问提供者,另外通过注册中心可灵活改变授权方式,而不需修改或升级提供者 可以全局设置开启令牌验证: <!--随机token令牌,使用UUID生成--> <dubbo:provider interface="com.foo.BarService" token="true" /> 或 <!--固定token令牌,

  • 在REST spring Boot中对用户进行授权和身份验证的最佳实践是什么? 我正在构建一个带有标准页面+REST API的移动应用程序。我看了很多关于Spring Security性的文章,基本上大多数都采用了某种fitler方法,允许或阻止REST调用。然而,在我的例子中,我有一些基于用户是谁的身份验证逻辑。例如,有一个API可以更新用户信息,用户可以更新自己,但不能更新其他人。最初我想使用

  • 我将Spring Boot与Kotlin结合使用,我的项目被划分为多个模块,其中应用层包含REST控制器和外观,域层包含服务和业务逻辑,基础设施层用于与外部服务或数据库通信。我认为(但我可能是错的)基本验证的最佳位置是notNull、notEmpty、max和min、size等。是facade,因为REST控制器和另一个模块都与它通信,但问题是像@Valid这样的javax验证注释只在REST控制

  • 问题内容: 我在CSRF令牌方面遇到问题。当我提交表单时,正在生成一个新的表单,但是我想我正在生成两个不同的令牌,这有点困惑。还有一个名为的令牌,因此我在开发人员工具中看到了两个不同的cookie(XSRF- TOKEN和_csrf),发布后它们没有变化。 我想要做的是为每个帖子请求生成一个新令牌,并检查它是否有效。我知道为了安全起见应该这样做,但是我坚持了下来。 漫长的一天,我是Express和