[英]How to store and access tokens for authentication?
app.post('/users/login', (req, res) => { var body = _.pick(req.body, ['email', 'password']); Users.findByCredentials(body.email, body.password).then((user) => { user.generateAuthTokens().then((token) => { res.header('x-auth', token).end(); }) }).catch((e) => res.send(e)); });
在上面的代碼中, user.generateAuthTokens()
返回特定用戶的令牌。 我想將令牌存儲在本地存儲中,以便可以在每個頁面中訪問它。 我已經使用過res.header()
來設置令牌,但是它不起作用,我又如何在客戶端讀取存儲的令牌? 我已經使用jsonwebtoken
創建令牌。
您可以在res.send中發送令牌
Users.findByCredentials(body.email, body.password) .then((user) => { user.generateAuthTokens() .then((token) => { res.status(200).send({ auth: true, token: token }); }) }) .catch((e) => res.send(e));
並使用前端瀏覽器的本地存儲保存在客戶端:
// To Save localStorage.setItem('token', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c') // To Access localStorage.getItem('token')
或者您也可以在HTTP客戶端中設置令牌
如果您使用Axios
// Example HTTP request with axios axios.post('/login', { username: 'test', password: 'test' }) .then(function (response) { localStorage.setItem('token', response.data.token) }) .catch(function (error) { console.log(error); }); // Set to default header Authorization with token axios.defaults.headers.common['Authorization'] = localStorage.getItem('token')
我認為您的app.post是錯誤的。 您在制作api端點嗎? 並在將密碼保存到數據庫之前對其進行加密。 從您的代碼看來,您正在按原樣保存它。 您也可以將令牌存儲在Cookie或本地存儲中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.