我有一个Web应用程序,它将使用OAuth2处理身份验证。身份验证后,Web应用程序具有令牌并可以访问资源。但是,如果用户刷新页面或关闭浏览器并稍后返回,则令牌丢失,用户必须再次登录。这在用户体验方面非常糟糕。
此外,服务器端代码会检查用户是否已登录并仅在用户登录时才发送应用程序的主页面。如果用户没有登录,则会重定向到登录页面。
当OAuth2令牌作为标题发送到服务器时,当用户将地址名称键入地址栏时,浏览器不会发送任何令牌。
我打算在Cookie中发送访问令牌。这是一个合适的解决方案吗?
答案 0 :(得分:1)
如果您使用React,您可能希望将访问令牌设置为您在window.ready()或ComponentDidMount()生命周期挂钩上发送到tour API或Server的每个HTTP请求的默认标头。
然后,完成后,您可以开始使用首选库(如axios)获取数据,或在应用程序准备就绪时获取。
为此,您只需在第一次将访问令牌保存在本地存储中,然后在window.ready()上检索它。 您将在App的Container Component或index.html文件的脚本标记中执行此操作。
此解决方案不会让您能够为安全路线执行服务器端水合,尤其是如果您的数据来自独立API。 使用这种解决方案时解决服务器端水化的唯一方法是将用户访问令牌设置为url中的查询字符串参数,这样浏览器即使不执行javascript也可以将其传递给服务器;但是存在明显的安全漏洞。
希望这会有所帮助,欢呼。