簡體   English   中英

如何存儲和訪問令牌以進行身份​​驗證?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM