2016-03-12 111 views
0

我正在AngularJs項目上工作,我對網絡很陌生。我試圖實現的是簡單的登錄。我已經在服務器端(nodejs)以及客戶端實現了令牌庫身份驗證。AngularJs重定向URL沒有通過授權標題到服務器

一切似乎都很好。除了當我嘗試

這一點。$ window.location.href

當我點擊登錄,來測試我的驗證工作正常,我有一個名爲$ http.get到授權結束點它完美的工作。然後我調用nodejs(serve)爲給我一個給定端點上的頁面,這需要授權令牌標頭。但它沒有被髮送。

public loginClick =() => { 
     this.authService.login(this.user).then(msg => { 
      console.log("success"); 
      this.$http.get(Config.apiEndpoint().url + '/memberinfo').then(result => { 

       console.log(result.data); //<== this works 
       var landingUrl = "http://" + this.$window.location.host + "/dashboard/"; 
       this.$window.location.href = landingUrl; //<== this does not works 
      }); 

     }, errMsg => { 
      console.log("failes"); 
     }); 

    } 

的NodeJS代碼

app.get('/', moduleRoutes.root); 
app.get('/dashboard/', moduleRoutes.root); 

export function root(req: express.Request, res: express.Response) { 
    if (authorization.isAuthorized(req, res)) { 
     res.sendfile('./public/views/index.html'); 
    } else { 
     res.sendfile('./public/views/login.html'); 
    } 
}; 
+0

嘗試使用,而不是$位置$窗口。 .location.href – Bata

+0

你似乎沒有告訴$ http發送任何額外的頭文件。你可以看看在這裏設置標題的文檔https://docs.angularjs.org/api/ng/service/$http/#setting-http-headers – toskv

+0

此外,你似乎正在發回整個頁面。 。你不應該使用$ http服務來做這件事。這是你可以用路由器解決的更多問題。 :) – toskv

回答

-1

您應該使用$位置是這樣的:

public loginClick =() => { 
     this.authService.login(this.user).then(msg => { 
      console.log("success"); 
      this.$http.get(Config.apiEndpoint().url + '/memberinfo').then(result => { 

       console.log(result.data); 
       $location.path('/dashboard'); 
      }); 

     }, errMsg => { 
      console.log("failes"); 
     }); 

    } 

感謝&乾杯