Spring boot 在Spring Boot中如何使用JWT进行身份验证

Spring boot 在Spring Boot中如何使用JWT进行身份验证,spring-boot,rest,jwt,Spring Boot,Rest,Jwt,在Spring Boot中,JWT的身份验证是如何工作的?我是返回自定义用户并将名为token的字段设置为JWT,还是返回包含所有用户信息的JWT,以便稍后提取?使用JWT进行授权时,我需要返回我的自定义用户信息以显示在应用程序中。以下是JWT设计的几个要点: 客户端通过向身份提供程序发送凭据登录 身份提供者验证凭证;如果一切正常,它将检索用户数据,生成一个JWT,其中包含用于访问服务的用户详细信息和权限,并设置JWT的过期时间(可能是无限的) 客户机存储JWT的时间有限或无限,具体取决于身份提

在Spring Boot中,JWT的身份验证是如何工作的?我是返回自定义用户并将名为token的字段设置为JWT,还是返回包含所有用户信息的JWT,以便稍后提取?使用JWT进行授权时,我需要返回我的自定义用户信息以显示在应用程序中。

以下是JWT设计的几个要点:

  • 客户端通过向身份提供程序发送凭据登录
  • 身份提供者验证凭证;如果一切正常,它将检索用户数据,生成一个JWT,其中包含用于访问服务的用户详细信息和权限,并设置JWT的过期时间(可能是无限的)
  • 客户机存储JWT的时间有限或无限,具体取决于身份提供程序设置的过期时间
  • 对于每个请求,客户机都会将存储在授权头中的JWT发送给服务提供商
  • 对于每个请求,服务提供者从授权头中获取JWT并解密它,如果需要,验证签名,如果一切正常,则提取用户数据和权限。仅基于此数据,而且无需在数据库中查找更多详细信息或联系身份提供商,它可以接受或拒绝客户端请求。唯一的要求是身份和服务提供商就加密达成协议,以便服务能够验证签名,甚至解密加密的身份

  • 一个很好的实践例子是

    是的,我理解基本的,但是对于我的用户实体,它比通常的用户详细信息(不仅仅是用户名和密码)有更多的信息,所以我创建了一个自定义的用户详细信息类来实现用户详细信息,从构造器获取用户实体,并从该用户实体获取用户名、密码和权限,我的意思是我想访问该用户实体信息,如(id/gender/pic url等)。我可以从JWT提取该信息吗?