问题描述
我正在向我的服务器发出 axios post 请求以登录用户并在控制台中记录响应以观察返回的数据:
const Login = () => {
const [email,setEmail] = useState("");
const [password,setPassword] = useState("");
const submitForm = (e) => {
e.preventDefault();
axios
.post("http://127.0.0.1:3000/login",{ email,password })
.then((res) => console.log("res",res))
.catch((err) => console.log("err",err));
console.log({ email,password });
};
当用户成功登录时,我会生成一个令牌,将用户的数据与这个新生成的令牌一起返回。正如您在此处看到的,我正在从响应正文中删除用户密码,以免暴露密码:
const generatetoken = (user) => {
delete user.password;
const token = jwt.sign(user,config.appKey,{ expiresIn: 86400 });
return { ...user,...{ token } };
};
这是控制台中记录的数据。在图 1 中,您可以看到响应的数据部分中没有密码。
然而,在响应的配置部分,密码被暴露(参见图 2)。我的问题是,这是值得关注的事情吗?如果是这样,我如何从响应中完全删除用户的密码?
提前致谢!
解决方法
如果您的连接是安全的(基于 TLS 的 HTTP,...),则无需担心。
HTTP 响应不包括它,因为实际的响应负载是 res.data
。
它存储在 axios
response object 中,因为 res.config
是为请求提供给 axios
的配置。但它没有存储在任何持久存储中。