0
所以我試圖在我的應用程序的某些路線上實施警衛。所以基本上我想發送一個http請求到我的api(後端用express),如果我的會話存在,用戶可以訪問路由。Auth警衛與http請求不適用於Angular 2
我看到很多人在做它的例子,我嘗試了所有的人,但都沒有工作。我在chrome中檢查了開發工具,並且沒有錯誤,我只是看到請求處於「正在等待」狀態。
那麼我做錯了什麼?如果我不做一個http請求,它完美的工作。
我的auth-guard.service.ts
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
return this.authService.isAuthenticated();
}
這是我auth.service.ts
public isAuthenticated() : Observable<boolean> | boolean {
let router: Router = this.router;
let obs;
try {
obs = this.http.get('/api/session')
.map(result => result.json())
.map(resultJson => (resultJson && resultJson.success));
} catch (err) {
obs = Observable.of(false);
}
return obs
.map(success => {
// navigate to login page
if (!success)
router.navigate(['/login']);
return success;
});
}
這裏是我的API函數
exports.getSession = function(req, res) {
return (req.session.passport)? {success: true}: {success: false};
}
如果有請求掛起,這可能意味着,你有一些後端問題,因爲你的Angular客戶端代碼在請求結束時被執行。 –
你是對的!錯誤來自我的後端,謝謝! – Manu