Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 反应(或角度)+;JWT认证&x2B;会话/Cookies_Angular_Reactjs_Authentication_Jwt - Fatal编程技术网

Angular 反应(或角度)+;JWT认证&x2B;会话/Cookies

Angular 反应(或角度)+;JWT认证&x2B;会话/Cookies,angular,reactjs,authentication,jwt,Angular,Reactjs,Authentication,Jwt,我的应用服务器使用JWT身份验证,我的前端是React(但就这个问题而言,也可能是角度) 用户首次登录时,应用程序将交换用户提供的用户名+密码,并获取JWT令牌,以向应用程序服务器发出内部API请求 根据用户体验,我真的希望用户不必在每次访问“myapp.com”时都输入用户名+密码。但这提出了另一个问题。出于安全目的,JWT密钥通常是短期的,必须在密钥的“寿命”结束后使用旧的JWT(短期)或新的用户名+密码续订,并且不允许再续订 在这种情况下,维护无麻烦用户体验的常见做法是什么?JWT密钥是否

我的应用服务器使用JWT身份验证,我的前端是React(但就这个问题而言,也可能是角度)

用户首次登录时,应用程序将交换用户提供的用户名+密码,并获取JWT令牌,以向应用程序服务器发出内部API请求

根据用户体验,我真的希望用户不必在每次访问“myapp.com”时都输入用户名+密码。但这提出了另一个问题。出于安全目的,JWT密钥通常是短期的,必须在密钥的“寿命”结束后使用旧的JWT(短期)或新的用户名+密码续订,并且不允许再续订

在这种情况下,维护无麻烦用户体验的常见做法是什么?JWT密钥是否异常长寿,只是使用Cookie保留JWT令牌,还是在Cookie中实际保留用户名+密码?如果是这样的话,我会非常惊讶


用用户的IP地址对JWT进行编码,并赋予其无限的生命,这有意义吗?因此,如果其他人(或用户本人)使用不同的位置,他/她必须重新输入密码并获取该位置的不确定密钥?

我们遵循的模式是,我们通常将用户身份令牌的令牌到期日设置为一天。访问令牌大约需要3-4小时

当用户登录时,我们使用他的凭据获取标识令牌,并将其存储在localStorage中。然后,我们触发另一个请求,使用我们拥有的标识令牌获取webapp的客户端访问令牌,并将客户端访问令牌保存在sessionStorage中

对于所有后续请求,我们从会话存储中提取它并将其与请求一起发送

当用户关闭选项卡(会话)时,访问令牌将丢失,并在下次使用标识令牌再次打开时重新获取

所以他必须每天登录一次

如果您更担心有人从存储中窃取令牌,可以使用AES对令牌进行加密和解密

希望这有帮助