2013-07-22 40 views
0

我的應用程序運行在NodeJS,ExpressJS和AngularJS上。我正在嘗試使用PassportJS進行Facebook身份驗證。爲了避免發佈大量不必要的代碼,我們只需說Passport代碼按預期工作並登錄Facebook,抓取令牌並接收響應。ExpressJS和Angular - '離開'應用程序做服務器端身份驗證

在我的路線設置爲ExpressJS如下:

app.get('/', routes.index); 
app.get('/fbauth', passport.authenticate('facebook', { scope: 'email' })); 
app.get('/fbauthed', passport.authenticate('facebook',{ failureRedirect: '/' }), routes.loggedin); 
app.get('/logout', function(req, res) { 
    req.logOut(); 
    res.redirect('/'); 
}); 

我的服務器設置在localhost:3000

問題

我的問題是,角是不是跟這個行爲的。當我在我的頁面上添加一個鏈接到href="/fbauth"(這是localhost:3000/fbauth)我看到地址欄變爲localhost:3000/fbauth秒,然後我的主頁localhost:3000頁面重新加載。

但是,如果我在地址欄中輸入localhost:3000/fbauth,身份驗證就會發生,我會轉到facebook - >localhost:3000/fbauthed

認爲發生這種情況,因爲角路由試圖「接管」在<a>鏈接的網址,但我不知道如何去實現它。我試過配置我的角路由:

when('/fbauth', { 
     redirectTo: '/fbauth' 
     }). 

但是,這加載一個空白屏幕。我怎樣才能使這兩個工作在一起?

+0

看看'$ location'服務文檔中的'HTML鏈接重寫'部分http://docs.angularjs.org/guide/dev_guide.services.$location。它有關於如何阻止Angular重寫網址的詳細信息 – Chandermani

回答

5

添加目標= 「_自我」 的作品在角1.0.1:

請用facebook

此功能是記錄 -

如果(http://docs.angularjs.org/guide/dev_guide.services $位置搜索 '_self'。)你很好奇,看看角度來源(5365 @ v1.0.1行)。只有!elm.attr('target')爲真時纔會發生點擊劫持。

+0

啊哈!有用。神奇,容易修復。謝謝你。 – Jascination

+0

一個問題 - 我從應用程序內部開始,然後執行身份驗證,這會離開應用程序。我該如何回到應用程序內部?如上所述,我目前採用'/ fbauthed',但這顯然是任何控制器的外部... – Jascination

+0

你應該設置路由角度當/ fbauthed指向控制器的地方 – Grievoushead

相關問題