所以我正在嘗試創建一個用于身份驗證的令牌。
場景 1: 當我直接訪問本地服務器localhost:3001/login 時,我能夠更新/設定 cookie。這是我的代碼片段:
app.get('/login', async (req, res) => {
const run_query = (username, password) => {
UserModel.findOne({ username:username }, (e, obj) => {
if(obj === null)
res.send('no user')
else if(e)
res.send(obj)
else {
bcrypt.compare(password, obj.password, function(e, resp) {
if(resp) {
const accessToken = createTokens(obj)
res.cookie(`access-token`, accessToken);
res.send(obj)
}
else
res.send('wrong password')
})
}
})
}
run_query(req.body.username, req.body.password)
})
場景 2: 當我嘗試通過 axios.get訪問localhost:3001/login 時,單擊按鈕 (React) 我能夠成功運行我的查詢并發送用戶的 obj 資料,但它沒有設定 cookie。
這是我通過 React 訪問 /login 的方法:
const login = async () => {
try {
const res = await axios.get('http://localhost:3001/login', {
username: username,
password: password
})
const loginTrue = (res) => {
setLogged(true)
console.log(res)
}
res.data === 'wrong password' ? alert('Wrong Password')
: res.data === 'no user' ? alert('Username not Found')
: res.data === 'empty' ? alert('Please Fill up all fields')
: res.data._id !== undefined && res.data._id !== '' ? loginTrue(res.data)
: alert('Error: ' res.data.Error)
} catch (e) {
console.log(e)
}
}
問題:
- 為什么我只能在直接訪問 localhost:3001/login 時更新我的?? cookie?
我一定是錯過了什么或做錯了什么。謝謝!
uj5u.com熱心網友回復:
有一個關于 cookie 本身如何作業以及 Axios 如何處理它們的執行緒。有幾件事可能會根據您的環境起作用,因此我不會重復。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/380242.html
