我在Nextjs应用程序上工作,我想使用php laravel API添加auth。所以我在搜索在应用程序中存储令牌的最佳方法,我发现它是通过httponly cookie存储的,这就是我使用api路由来存储它的方法。但现在我面临的问题是如何在客户端发送到api的每个请求上发送令牌。
现在我使用getServerSideProps来获取令牌,然后通过props将其发送到所需的组件,但这种解决方案是多余的,一点也不方便。我使用getServerSideProps只是为了在需要与后端通信的任何页面上获取令牌。
那么有没有什么方法可以在每次请求时转发令牌,而不需要从服务器端获取令牌并将其发送到客户端?或者你认为有没有更好的方法将令牌存储在其他地方?
1条答案
按热度按时间gywdnpxw1#
如果您有一个httpOnly cookie,并且您不想将其暴露给客户端,我不建议将其作为prop在getServerSideProps中传递给组件。这将暴露您的令牌,并且存在脚本访问cookie的风险。如果cookie是HttpOnly,则意味着无法通过客户端脚本访问它。相反,你可以创建一个NextJS api并在那里访问你的令牌。然后在你的应用中调用那个API。
这是一个如何在nextjs API中访问cookie的示例:
现在在客户端的组件中,您可以轻松地使用
/api/endpoint/
中的新端点,而不是使用令牌调用API。在此方法中,您永远不会将令牌暴露给浏览器: