我正在构建一个属性搜索应用程序,并访问需要传递令牌并获取令牌所需的属性,我已经获得了用户名和密码。
我正在尝试请求令牌,该令牌需要与标头一起发送的用户名和密码。
我正在使用axios来处理此发布请求。
let tokenURL = process.env.REACT_APP_TOKEN;
let username = process.env.REACT_APP_USERNAME;
let password = process.env.REACT_APP_PASSWORD;
const user = new URLSearchParams()
user.append('username', username)
user.append('password', password)
return await axios.post(tokenURL, user)
.then(function (response) {
localStorage.setItem('token', response.data.token)
return response.data.token
})
}
但是问题是,当我检查代码时,可以看到用户名和密码(显然)。 那么,处理此请求的最佳方法是什么?
答案 0 :(得分:1)
我通过创建服务器端文件auth.php解决了这个问题,现在我没有在我的react应用程序中调用tokenURL,而是在调用返回令牌的auth.php URL。
不确定这是否是最好的方法,但至少不会以这种方式公开用户名和密码
<?php
$url = 'http://example/login_check';
$data = array('username' => 'xxx', 'password' => 'xxx');
// use key 'http' even if you send the request to https://...
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data)
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { echo 'err'; }
echo json_decode($result)->token;