首页 > 解决方案 > 将用户的 ID 和登录令牌保存在本地存储中是个好主意吗?

问题描述

我正在开发Django + React项目,我被这种与登录用户的登录和管理视图有关的安全方法所困扰。

我正在django-rest-framework的. 而且我正在使用身份验证用户登录,因为我正在实现基于令牌的身份验证(而不是基于会话的使用RESTful APIdjango-rest-knoxCSRF

问题:将用户的 id 和令牌保存在本地存储中是个好主意吗?

目前,我有一个/auth/login/API 端点来处理登录用户的后端逻辑,并在成功登录时返回登录详细信息的 JSON 响应(包括用户idtoken)。

在我的前端,我使用reduxredux-persist因此即使网站刷新,用户的登录详细信息也会保留。这样redux-persist做的方法是将响应保存在local storage. 这意味着用户可以随时访问和id更改。tokendev tools

如果用户随后POST向需要 a 的 API 发出请求Token authentication header,则前端将查看该本地存储以获取token要提供给请求标头的值。

如果用户随后向请求数据中需要POST用户的 APIid发出请求,则前端还将在本地存储中查找 id。

标签: djangoreactjsauthenticationreduxdjango-rest-framework

解决方案


Localstorage是不安全的,尤其是对于存储令牌和 ID。例如,任何用户都可以访问浏览器的开发者工具,查看并编辑其内容。

您可以检查Django 的会话,因此您可以在服务器端安全地存储数据并将其内容与特定用户相关联。Mozilla有一个很棒的教程,它以比官方文档更清晰的方式解释了会话。


推荐阅读