簡體   English   中英

使用保存在vue.js中的cookies中的JWT從我的spring中獲取用戶object API用於持久登錄

[英]Using JWT saved in cookies in vue.js to get a user object from my spring API for persisted log-in

我正在嘗試為我的第一個 web 應用程序模擬一些持久登錄,以便該站點在刷新后仍然可用。 當我在控制台中打印令牌(保存在 cookie 中)時,它可以正常打印。 當我將 postman 與 header 中的令牌一起使用時,我得到了正確的 JSON 響應。 但是,在安裝方法中使用它時,我得到 401。所以我認為這是我在提取中實現標頭的方式的問題。 在此先感謝,因為我對編碼非常陌生。

 mounted: function() { console.log(this.$cookies.get('token')); let t = JSON.parse(JSON.stringify(this.$cookies.get('token'))); let h = new Headers(); h.append('Authentication', `Bearer ${t}`); fetch('http://localhost:8080/api/owner/persist', { method: 'GET', headers: h }).then((response) => { return response.json(); }).then((data) => { this.jwtUser = data; })

Java Controller 下面:如果我有 PreAuthorize 標簽,我會得到一個 401 錯誤,如果我把它拿走,我會得到一個 null 指針異常。 我認為我的 header 的格式有問題。我一直在搞亂它。

 @PreAuthorize("isAuthenticated()") @RequestMapping(path = "api/owner/persist", method = RequestMethod.GET) public Owner persistedLogin(Principal principal) { Owner o = new Owner(); o = ownerDAO.getOwnerInfoByName(principal.getName()); return o; }

傳輸訪問令牌(尤其是 JWT)的標准方式是 header,稱為Authorization

在您的代碼示例中,您使用的Authentication從描述的角度來看是正確的,因為 JWT 在第一步中對請求進行身份驗證,並且僅在第二步源中進行授權。 但是標准 header 就像它一樣,被命名為Authorization 您對標頭值 ( Bearer <token> ) 的格式在我看來是正確的。

仔細檢查需要攜帶令牌的 header 的正確名稱,並確認您使用的是正確的名稱,它按照您在 Postman 的測試中所述工作。

最好的,cobz

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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