我正在編寫代碼爲Angular
SPA
(單頁應用程序)。使用UI路由器和令牌在AngularJS中重定向
在後端把它連接到寫在
Java
發動機,其承擔了大部分的處理(與我不關心)。我正在使用
UI Router
來做路由。
問題
然而,有一個棘手的情況,我不能夠完成。
登錄時,我進行了一個API調用,返回格式爲
JSON
的響應。如果我的通話成功(即登錄憑證匹配),我在返回的
JSON
中得到一個令牌,它基本上是一個符號,字母和數字組合的字符串。我將它保存在我的
rootscope
中,然後像訪問$ rootScope.myToken一樣訪問它。然後我在隨後的API調用中使用相同的標記。
現在我想在AngularJS
做的是將用戶重定向到登錄頁面,如果他/未登錄她,並試圖通過直接在地址欄中輸入它訪問某些網址。
我在這裏找到了一個相當簡單的方法Redirect on all routes to login if not authenticated。但是我無法用我的令牌來實現這一點。
問題
我應該怎麼做才能讓與令牌這項工作?除了這個答案以外的任何其他建議也是受歡迎的。 PS:我已經嘗試了多種方法在stackoverflow上,我發現它們不是在我的上下文中工作或過於複雜的目的。
更新:我可以成功實施Simon H的答案在我的代碼中。然而,我面臨的問題是,這將只會重新定向,因爲我希望在登錄後至少有一次我的應用程序退出。如果我嘗試直接通過URL訪問頁面而無需至少登錄和登出一次,則此方法失敗,我仍然可以訪問該頁面。有小費嗎?
我是一個Web開發的初學者,從我看過的內容來看,JWT相當複雜。就我而言,令牌只不過是一個隨機生成的字符串,正如我在問題中提到的那樣。也許它甚至不是一個適當的標記,我們簡單地稱它爲一個標記。這會繼續嗎? – theHeman
此外,我有點困惑這段代碼應該在哪裏?在具有我的路由代碼的'app.js'文件中,我應該將它放在路由配置中嗎?還是外面呢? – theHeman
**更新:**我可以在我的代碼中成功實現這一點。然而,我面臨的問題是,這將只會重新定向,因爲我希望在登錄後至少有一次我的應用程序退出。如果我嘗試直接通過URL訪問頁面而無需至少登錄和登出一次,則此方法失敗,我仍然可以訪問該頁面。有小費嗎? – theHeman