2015-08-22 908 views
1

我正在研究一個小項目,以學習AngularJS。這個項目有兩個頁面「/」和「/登錄」。所以,當未經過身份驗證時,它會重定向到「/ login」,並且如果通過身份驗證,則會是「/」。身份驗證過程由NodeJS服務器處理並運行。我在控制器中實現了一個簡單的認證。/和/#/有什麼區別?

if ((typeof $scope.token === "undefined") || ($scope.token == null)) 
    $location.path("/login"); 
else 
    $location.path("/"); 

這段代碼,當我沒有通過認證並獲得「/」重定向我「/登錄」,但是當我進入「/#/」它顯示的「/」的內容,即使我沒有通過身份驗證。

所以我想知道「/」和「/#/」之間是否有區別,以及它爲什麼會發生?

+0

有更好的方法來保護甚至不讓控制器或模板加載的路由。在路由器中使用'resolve'或使用路由更改事件處理程序 – charlietfl

回答

2

帶有#<anything>的URL是瀏覽器本地的,散列以及它在從請求發送到服務器之後的任何內容,也不會在附加或更改散列時重新加載頁面。對於可直接在URL中共享的客戶端觸發器非常有用。

本地,您可以訪問它與location.hash值(但在你的情況下,它會僅僅是"/"

所以不同的是,一個是你的/ URL沒有亂碼,/#/是您的網址它具有"/"的散列值,因爲它是值。