假设我有一个React应用程序,带有Spring REST API,我使用基于令牌的身份验证。现在,假设我也使用React-Router进行导航。
我希望保护应用的某些页面仅对登录用户可见。
我计划做的是在用户通过身份验证后,在每个页面更改时询问我的服务器(请求获取请求),然后提供相应的数据。如果没有,请重定向到登录
我认为这是正确的方法,以确保我的用户通过身份验证来查看页面,但还有更好的方法吗?如果每个页面的呼叫都很重,我会害怕。其他无状态的其他API如何处理这种情况?
提前致谢!
答案 0 :(得分:0)
将令牌存储在本地存储或会话存储中,这样您只需要对授权服务器进行一次初始调用。 https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API
答案 1 :(得分:0)
我用Laravel后端和VueJS前端完成了这个工具。与React略有不同,但我觉得有些相同。
我使用了JWT
(JSON Web Token),并创建了一个登录API。如果用户通过登录API登录,则向用户发出令牌和响应。然后,您的前端框架应将令牌保留在Cookie或本地存储中。
当您的应用想要从API检索数据时,每次都会将令牌附加到请求标头。您可以在登录用户时解密来自后端中间件的令牌。
好的,这就是JWT
和后端工作的方式。回到您的问题,只要令牌未过期,您就可以轻松存储令牌并将其重新用作用户标识。
打开前端页面后,向服务器API发送请求,检索用户的全名,帐户名称或至少一次页面呈现所需的内容。 (相反,如果您已将其存储在本地存储中,只需显示它。)
由于令牌存储,您将知道用户是否登录。这样您就可以从前端框架路由处理一些私有的,仅限成员的页面。 但仅仅是为了改善用户体验。在检索并返回敏感数据之前,请检查令牌有效和用户标识。